condenser 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2405) hide show
  1. checksums.yaml +4 -4
  2. data/lib/condenser/asset.rb +37 -2
  3. data/lib/condenser/environment.rb +15 -0
  4. data/lib/condenser/minifiers/node_modules/.bin/uglifyjs +1 -0
  5. data/lib/condenser/minifiers/node_modules/commander/CHANGELOG.md +419 -0
  6. data/lib/condenser/minifiers/node_modules/commander/LICENSE +22 -0
  7. data/lib/condenser/minifiers/node_modules/commander/Readme.md +428 -0
  8. data/lib/condenser/minifiers/node_modules/commander/index.js +1224 -0
  9. data/lib/condenser/minifiers/node_modules/commander/package.json +70 -0
  10. data/lib/condenser/minifiers/node_modules/commander/typings/index.d.ts +310 -0
  11. data/lib/condenser/minifiers/node_modules/source-map/package.json +1 -1
  12. data/lib/condenser/minifiers/node_modules/uglify-js/LICENSE +1 -1
  13. data/lib/condenser/minifiers/node_modules/uglify-js/README.md +50 -33
  14. data/lib/condenser/minifiers/node_modules/uglify-js/bin/uglifyjs +51 -47
  15. data/lib/condenser/minifiers/node_modules/uglify-js/lib/ast.js +151 -96
  16. data/lib/condenser/minifiers/node_modules/uglify-js/lib/compress.js +3264 -1761
  17. data/lib/condenser/minifiers/node_modules/uglify-js/lib/minify.js +79 -44
  18. data/lib/condenser/minifiers/node_modules/uglify-js/lib/mozilla-ast.js +17 -20
  19. data/lib/condenser/minifiers/node_modules/uglify-js/lib/output.js +350 -384
  20. data/lib/condenser/minifiers/node_modules/uglify-js/lib/parse.js +187 -223
  21. data/lib/condenser/minifiers/node_modules/uglify-js/lib/propmangle.js +45 -55
  22. data/lib/condenser/minifiers/node_modules/uglify-js/lib/scope.js +142 -117
  23. data/lib/condenser/minifiers/node_modules/uglify-js/lib/sourcemap.js +50 -43
  24. data/lib/condenser/minifiers/node_modules/uglify-js/lib/transform.js +52 -81
  25. data/lib/condenser/minifiers/node_modules/uglify-js/lib/utils.js +55 -126
  26. data/lib/condenser/minifiers/node_modules/uglify-js/package.json +10 -11
  27. data/lib/condenser/minifiers/node_modules/uglify-js/tools/domprops.json +1249 -0
  28. data/lib/condenser/minifiers/node_modules/uglify-js/tools/exports.js +3 -3
  29. data/lib/condenser/minifiers/node_modules/uglify-js/tools/node.js +25 -29
  30. data/lib/condenser/minifiers/node_modules/uglify-js/tools/props.html +535 -56
  31. data/lib/condenser/minifiers/package-lock.json +25 -0
  32. data/lib/condenser/pipeline.rb +1 -1
  33. data/lib/condenser/processors/node_modules/{rollup/node_modules/.bin → .bin}/acorn +0 -0
  34. data/lib/condenser/processors/node_modules/@babel/core/lib/config/caching.js +4 -5
  35. data/lib/condenser/processors/node_modules/@babel/core/lib/config/config-chain.js +1 -1
  36. data/lib/condenser/processors/node_modules/@babel/core/lib/config/config-descriptors.js +2 -1
  37. data/lib/condenser/processors/node_modules/@babel/core/lib/config/files/configuration.js +27 -36
  38. data/lib/condenser/processors/node_modules/@babel/core/lib/config/files/index-browser.js +4 -0
  39. data/lib/condenser/processors/node_modules/@babel/core/lib/config/files/index.js +6 -0
  40. data/lib/condenser/processors/node_modules/@babel/core/lib/config/full.js +31 -8
  41. data/lib/condenser/processors/node_modules/@babel/core/lib/config/partial.js +2 -2
  42. data/lib/condenser/processors/node_modules/@babel/core/lib/config/validation/plugins.js +10 -1
  43. data/lib/condenser/processors/node_modules/@babel/core/lib/index.js +3 -1
  44. data/lib/condenser/processors/node_modules/@babel/core/lib/tools/build-external-helpers.js +3 -1
  45. data/lib/condenser/processors/node_modules/@babel/core/lib/transformation/file/file.js +8 -3
  46. data/lib/condenser/processors/node_modules/@babel/core/lib/transformation/file/generate.js +1 -1
  47. data/lib/condenser/processors/node_modules/@babel/core/lib/transformation/file/merge-map.js +14 -22
  48. data/lib/condenser/processors/node_modules/@babel/core/lib/transformation/index.js +36 -5
  49. data/lib/condenser/processors/node_modules/@babel/core/lib/transformation/normalize-file.js +75 -28
  50. data/lib/condenser/processors/node_modules/@babel/core/package.json +21 -16
  51. data/lib/condenser/processors/node_modules/@babel/generator/lib/buffer.js +1 -14
  52. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/classes.js +6 -45
  53. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/expressions.js +16 -16
  54. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/flow.js +119 -15
  55. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/methods.js +4 -10
  56. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/modules.js +8 -14
  57. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/statements.js +7 -13
  58. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/types.js +8 -22
  59. data/lib/condenser/processors/node_modules/@babel/generator/lib/generators/typescript.js +47 -4
  60. data/lib/condenser/processors/node_modules/@babel/generator/lib/node/index.js +9 -14
  61. data/lib/condenser/processors/node_modules/@babel/generator/lib/node/parentheses.js +36 -42
  62. data/lib/condenser/processors/node_modules/@babel/generator/lib/node/whitespace.js +18 -24
  63. data/lib/condenser/processors/node_modules/@babel/generator/lib/printer.js +11 -33
  64. data/lib/condenser/processors/node_modules/@babel/generator/lib/source-map.js +6 -14
  65. data/lib/condenser/processors/node_modules/@babel/generator/package.json +15 -16
  66. data/lib/condenser/processors/node_modules/@babel/helper-annotate-as-pure/LICENSE +1 -1
  67. data/lib/condenser/processors/node_modules/@babel/helper-annotate-as-pure/lib/index.js +4 -10
  68. data/lib/condenser/processors/node_modules/@babel/helper-annotate-as-pure/package.json +15 -11
  69. data/lib/condenser/processors/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/LICENSE +1 -1
  70. data/lib/condenser/processors/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/lib/index.js +7 -21
  71. data/lib/condenser/processors/node_modules/@babel/helper-builder-binary-assignment-operator-visitor/package.json +13 -12
  72. data/lib/condenser/processors/node_modules/@babel/helper-call-delegate/lib/index.js +13 -27
  73. data/lib/condenser/processors/node_modules/@babel/helper-call-delegate/package.json +14 -14
  74. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/decorators.js +23 -47
  75. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/features.js +0 -4
  76. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/fields.js +139 -150
  77. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/index.js +4 -20
  78. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/misc.js +13 -29
  79. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/lib/typescript.js +12 -0
  80. data/lib/condenser/processors/node_modules/@babel/helper-create-class-features-plugin/package.json +18 -18
  81. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/LICENSE +22 -0
  82. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/README.md +19 -0
  83. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/lib/features.js +27 -0
  84. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/lib/index.js +116 -0
  85. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/lib/util.js +55 -0
  86. data/lib/condenser/processors/node_modules/@babel/helper-create-regexp-features-plugin/package.json +68 -0
  87. data/lib/condenser/processors/node_modules/@babel/helper-define-map/lib/index.js +28 -50
  88. data/lib/condenser/processors/node_modules/@babel/helper-define-map/package.json +13 -13
  89. data/lib/condenser/processors/node_modules/@babel/helper-explode-assignable-expression/LICENSE +1 -1
  90. data/lib/condenser/processors/node_modules/@babel/helper-explode-assignable-expression/lib/index.js +17 -23
  91. data/lib/condenser/processors/node_modules/@babel/helper-explode-assignable-expression/package.json +13 -12
  92. data/lib/condenser/processors/node_modules/@babel/helper-function-name/LICENSE +1 -1
  93. data/lib/condenser/processors/node_modules/@babel/helper-function-name/lib/index.js +24 -46
  94. data/lib/condenser/processors/node_modules/@babel/helper-function-name/package.json +14 -13
  95. data/lib/condenser/processors/node_modules/@babel/helper-get-function-arity/LICENSE +1 -1
  96. data/lib/condenser/processors/node_modules/@babel/helper-get-function-arity/lib/index.js +4 -10
  97. data/lib/condenser/processors/node_modules/@babel/helper-get-function-arity/package.json +15 -11
  98. data/lib/condenser/processors/node_modules/@babel/helper-hoist-variables/lib/index.js +5 -11
  99. data/lib/condenser/processors/node_modules/@babel/helper-hoist-variables/package.json +12 -12
  100. data/lib/condenser/processors/node_modules/@babel/helper-member-expression-to-functions/lib/index.js +9 -15
  101. data/lib/condenser/processors/node_modules/@babel/helper-member-expression-to-functions/package.json +12 -12
  102. data/lib/condenser/processors/node_modules/@babel/helper-module-imports/LICENSE +1 -1
  103. data/lib/condenser/processors/node_modules/@babel/helper-module-imports/lib/import-builder.js +31 -45
  104. data/lib/condenser/processors/node_modules/@babel/helper-module-imports/lib/import-injector.js +10 -24
  105. data/lib/condenser/processors/node_modules/@babel/helper-module-imports/package.json +16 -12
  106. data/lib/condenser/processors/node_modules/@babel/helper-module-transforms/lib/index.js +32 -70
  107. data/lib/condenser/processors/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js +4 -20
  108. data/lib/condenser/processors/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js +33 -69
  109. data/lib/condenser/processors/node_modules/@babel/helper-module-transforms/package.json +16 -16
  110. data/lib/condenser/processors/node_modules/@babel/helper-optimise-call-expression/LICENSE +1 -1
  111. data/lib/condenser/processors/node_modules/@babel/helper-optimise-call-expression/lib/index.js +6 -12
  112. data/lib/condenser/processors/node_modules/@babel/helper-optimise-call-expression/package.json +15 -11
  113. data/lib/condenser/processors/node_modules/@babel/helper-plugin-utils/package.json +1 -0
  114. data/lib/condenser/processors/node_modules/@babel/helper-regex/package.json +3 -5
  115. data/lib/condenser/processors/node_modules/@babel/helper-remap-async-to-generator/LICENSE +1 -1
  116. data/lib/condenser/processors/node_modules/@babel/helper-remap-async-to-generator/lib/index.js +10 -32
  117. data/lib/condenser/processors/node_modules/@babel/helper-remap-async-to-generator/package.json +16 -15
  118. data/lib/condenser/processors/node_modules/@babel/helper-replace-supers/lib/index.js +26 -56
  119. data/lib/condenser/processors/node_modules/@babel/helper-replace-supers/package.json +15 -15
  120. data/lib/condenser/processors/node_modules/@babel/helper-simple-access/LICENSE +1 -1
  121. data/lib/condenser/processors/node_modules/@babel/helper-simple-access/lib/index.js +8 -14
  122. data/lib/condenser/processors/node_modules/@babel/helper-simple-access/package.json +13 -12
  123. data/lib/condenser/processors/node_modules/@babel/helper-split-export-declaration/lib/index.js +8 -14
  124. data/lib/condenser/processors/node_modules/@babel/helper-split-export-declaration/package.json +12 -12
  125. data/lib/condenser/processors/node_modules/@babel/helper-wrap-function/LICENSE +1 -1
  126. data/lib/condenser/processors/node_modules/@babel/helper-wrap-function/lib/index.js +13 -35
  127. data/lib/condenser/processors/node_modules/@babel/helper-wrap-function/package.json +15 -14
  128. data/lib/condenser/processors/node_modules/@babel/helpers/lib/helpers.js +99 -67
  129. data/lib/condenser/processors/node_modules/@babel/helpers/lib/index.js +14 -28
  130. data/lib/condenser/processors/node_modules/@babel/helpers/package.json +15 -15
  131. data/lib/condenser/processors/node_modules/@babel/parser/CHANGELOG.md +13 -13
  132. data/lib/condenser/processors/node_modules/@babel/parser/lib/index.js +1593 -716
  133. data/lib/condenser/processors/node_modules/@babel/parser/lib/index.js.map +1 -0
  134. data/lib/condenser/processors/node_modules/@babel/parser/lib/options.js +35 -0
  135. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/base.js +24 -0
  136. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/comments.js +198 -0
  137. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/expression.js +1703 -0
  138. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/index.js +59 -0
  139. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/location.js +49 -0
  140. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/lval.js +364 -0
  141. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/node.js +89 -0
  142. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/statement.js +1529 -0
  143. data/lib/condenser/processors/node_modules/@babel/parser/lib/parser/util.js +228 -0
  144. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugin-utils.js +91 -0
  145. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/estree.js +283 -0
  146. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/flow.js +2690 -0
  147. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/jsx/index.js +516 -0
  148. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/jsx/xhtml.js +263 -0
  149. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/placeholders.js +204 -0
  150. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/typescript/index.js +2076 -0
  151. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/typescript/scope.js +94 -0
  152. data/lib/condenser/processors/node_modules/@babel/parser/lib/plugins/v8intrinsic.js +43 -0
  153. data/lib/condenser/processors/node_modules/@babel/parser/lib/tokenizer/context.js +102 -0
  154. data/lib/condenser/processors/node_modules/@babel/parser/lib/tokenizer/index.js +1225 -0
  155. data/lib/condenser/processors/node_modules/@babel/parser/lib/tokenizer/state.js +101 -0
  156. data/lib/condenser/processors/node_modules/@babel/parser/lib/tokenizer/types.js +267 -0
  157. data/lib/condenser/processors/node_modules/@babel/parser/lib/types.js +0 -0
  158. data/lib/condenser/processors/node_modules/@babel/parser/lib/util/identifier.js +99 -0
  159. data/lib/condenser/processors/node_modules/@babel/parser/lib/util/location.js +43 -0
  160. data/lib/condenser/processors/node_modules/@babel/parser/lib/util/scope.js +172 -0
  161. data/lib/condenser/processors/node_modules/@babel/parser/lib/util/scopeflags.js +82 -0
  162. data/lib/condenser/processors/node_modules/@babel/parser/lib/util/whitespace.js +58 -0
  163. data/lib/condenser/processors/node_modules/@babel/parser/package.json +13 -13
  164. data/lib/condenser/processors/node_modules/@babel/parser/typings/babel-parser.d.ts +29 -18
  165. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-async-generator-functions/LICENSE +1 -1
  166. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-async-generator-functions/lib/for-await.js +8 -16
  167. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-async-generator-functions/lib/index.js +10 -42
  168. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-async-generator-functions/package.json +15 -14
  169. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-class-properties/lib/index.js +5 -21
  170. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-class-properties/package.json +9 -9
  171. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-dynamic-import/lib/index.js +4 -20
  172. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-dynamic-import/package.json +14 -14
  173. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-json-strings/LICENSE +1 -1
  174. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-json-strings/lib/index.js +4 -20
  175. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-json-strings/package.json +14 -13
  176. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-object-rest-spread/lib/index.js +109 -100
  177. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-object-rest-spread/package.json +14 -14
  178. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-optional-catch-binding/LICENSE +1 -1
  179. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-optional-catch-binding/lib/index.js +4 -20
  180. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-optional-catch-binding/package.json +14 -13
  181. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/lib/index.js +8 -53
  182. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/package.json +15 -16
  183. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-async-generators/LICENSE +1 -1
  184. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-async-generators/lib/index.js +2 -10
  185. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-async-generators/package.json +12 -11
  186. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-dynamic-import/LICENSE +1 -1
  187. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-dynamic-import/lib/index.js +2 -10
  188. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-dynamic-import/package.json +12 -11
  189. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-json-strings/LICENSE +1 -1
  190. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-json-strings/lib/index.js +2 -10
  191. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-json-strings/package.json +12 -11
  192. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-object-rest-spread/LICENSE +1 -1
  193. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-object-rest-spread/lib/index.js +2 -10
  194. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-object-rest-spread/package.json +12 -11
  195. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-optional-catch-binding/LICENSE +1 -1
  196. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-optional-catch-binding/lib/index.js +2 -10
  197. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-optional-catch-binding/package.json +12 -11
  198. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-top-level-await/LICENSE +22 -0
  199. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-top-level-await/README.md +19 -0
  200. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-top-level-await/lib/index.js +22 -0
  201. data/lib/condenser/processors/node_modules/@babel/plugin-syntax-top-level-await/package.json +53 -0
  202. data/lib/condenser/processors/node_modules/@babel/plugin-transform-arrow-functions/LICENSE +1 -1
  203. data/lib/condenser/processors/node_modules/@babel/plugin-transform-arrow-functions/lib/index.js +2 -10
  204. data/lib/condenser/processors/node_modules/@babel/plugin-transform-arrow-functions/package.json +14 -13
  205. data/lib/condenser/processors/node_modules/@babel/plugin-transform-async-to-generator/lib/index.js +9 -41
  206. data/lib/condenser/processors/node_modules/@babel/plugin-transform-async-to-generator/package.json +15 -15
  207. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoped-functions/LICENSE +1 -1
  208. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoped-functions/lib/index.js +6 -22
  209. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoped-functions/package.json +13 -12
  210. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoping/lib/index.js +78 -109
  211. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoping/lib/tdz.js +10 -18
  212. data/lib/condenser/processors/node_modules/@babel/plugin-transform-block-scoping/package.json +13 -13
  213. data/lib/condenser/processors/node_modules/@babel/plugin-transform-classes/lib/index.js +12 -60
  214. data/lib/condenser/processors/node_modules/@babel/plugin-transform-classes/lib/transformClass.js +69 -107
  215. data/lib/condenser/processors/node_modules/@babel/plugin-transform-classes/package.json +19 -19
  216. data/lib/condenser/processors/node_modules/@babel/plugin-transform-computed-properties/LICENSE +1 -1
  217. data/lib/condenser/processors/node_modules/@babel/plugin-transform-computed-properties/lib/index.js +23 -39
  218. data/lib/condenser/processors/node_modules/@babel/plugin-transform-computed-properties/package.json +13 -12
  219. data/lib/condenser/processors/node_modules/@babel/plugin-transform-destructuring/lib/index.js +75 -91
  220. data/lib/condenser/processors/node_modules/@babel/plugin-transform-destructuring/package.json +13 -13
  221. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/lib/index.js +6 -51
  222. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/package.json +15 -19
  223. data/lib/condenser/processors/node_modules/@babel/plugin-transform-duplicate-keys/lib/index.js +6 -22
  224. data/lib/condenser/processors/node_modules/@babel/plugin-transform-duplicate-keys/package.json +13 -13
  225. data/lib/condenser/processors/node_modules/@babel/plugin-transform-exponentiation-operator/LICENSE +1 -1
  226. data/lib/condenser/processors/node_modules/@babel/plugin-transform-exponentiation-operator/lib/index.js +6 -30
  227. data/lib/condenser/processors/node_modules/@babel/plugin-transform-exponentiation-operator/package.json +14 -13
  228. data/lib/condenser/processors/node_modules/@babel/plugin-transform-for-of/lib/index.js +36 -52
  229. data/lib/condenser/processors/node_modules/@babel/plugin-transform-for-of/package.json +13 -13
  230. data/lib/condenser/processors/node_modules/@babel/plugin-transform-function-name/lib/index.js +5 -21
  231. data/lib/condenser/processors/node_modules/@babel/plugin-transform-function-name/package.json +14 -14
  232. data/lib/condenser/processors/node_modules/@babel/plugin-transform-literals/LICENSE +1 -1
  233. data/lib/condenser/processors/node_modules/@babel/plugin-transform-literals/README.md +1 -1
  234. data/lib/condenser/processors/node_modules/@babel/plugin-transform-literals/lib/index.js +2 -10
  235. data/lib/condenser/processors/node_modules/@babel/plugin-transform-literals/package.json +13 -12
  236. data/lib/condenser/processors/node_modules/@babel/plugin-transform-member-expression-literals/LICENSE +1 -1
  237. data/lib/condenser/processors/node_modules/@babel/plugin-transform-member-expression-literals/lib/index.js +5 -21
  238. data/lib/condenser/processors/node_modules/@babel/plugin-transform-member-expression-literals/package.json +13 -12
  239. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-amd/lib/index.js +26 -58
  240. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-amd/package.json +14 -14
  241. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-commonjs/lib/index.js +22 -62
  242. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-commonjs/package.json +16 -16
  243. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-systemjs/lib/index.js +56 -86
  244. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-systemjs/package.json +15 -15
  245. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-umd/LICENSE +1 -1
  246. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-umd/lib/index.js +39 -67
  247. data/lib/condenser/processors/node_modules/@babel/plugin-transform-modules-umd/package.json +14 -13
  248. data/lib/condenser/processors/node_modules/@babel/plugin-transform-named-capturing-groups-regex/lib/index.js +6 -47
  249. data/lib/condenser/processors/node_modules/@babel/plugin-transform-named-capturing-groups-regex/package.json +21 -15
  250. data/lib/condenser/processors/node_modules/@babel/plugin-transform-new-target/lib/index.js +5 -21
  251. data/lib/condenser/processors/node_modules/@babel/plugin-transform-new-target/package.json +15 -15
  252. data/lib/condenser/processors/node_modules/@babel/plugin-transform-object-super/lib/index.js +7 -31
  253. data/lib/condenser/processors/node_modules/@babel/plugin-transform-object-super/package.json +14 -14
  254. data/lib/condenser/processors/node_modules/@babel/plugin-transform-parameters/lib/index.js +2 -10
  255. data/lib/condenser/processors/node_modules/@babel/plugin-transform-parameters/lib/params.js +15 -31
  256. data/lib/condenser/processors/node_modules/@babel/plugin-transform-parameters/lib/rest.js +25 -35
  257. data/lib/condenser/processors/node_modules/@babel/plugin-transform-parameters/package.json +15 -15
  258. data/lib/condenser/processors/node_modules/@babel/plugin-transform-property-literals/LICENSE +1 -1
  259. data/lib/condenser/processors/node_modules/@babel/plugin-transform-property-literals/lib/index.js +5 -21
  260. data/lib/condenser/processors/node_modules/@babel/plugin-transform-property-literals/package.json +13 -12
  261. data/lib/condenser/processors/node_modules/@babel/plugin-transform-regenerator/lib/index.js +2 -10
  262. data/lib/condenser/processors/node_modules/@babel/plugin-transform-regenerator/package.json +13 -13
  263. data/lib/condenser/processors/node_modules/@babel/plugin-transform-reserved-words/LICENSE +1 -1
  264. data/lib/condenser/processors/node_modules/@babel/plugin-transform-reserved-words/lib/index.js +4 -20
  265. data/lib/condenser/processors/node_modules/@babel/plugin-transform-reserved-words/package.json +13 -12
  266. data/lib/condenser/processors/node_modules/@babel/plugin-transform-runtime/lib/helpers.js +5 -21
  267. data/lib/condenser/processors/node_modules/@babel/plugin-transform-runtime/lib/index.js +46 -76
  268. data/lib/condenser/processors/node_modules/@babel/plugin-transform-runtime/package.json +15 -15
  269. data/lib/condenser/processors/node_modules/@babel/plugin-transform-shorthand-properties/LICENSE +1 -1
  270. data/lib/condenser/processors/node_modules/@babel/plugin-transform-shorthand-properties/lib/index.js +5 -21
  271. data/lib/condenser/processors/node_modules/@babel/plugin-transform-shorthand-properties/package.json +13 -12
  272. data/lib/condenser/processors/node_modules/@babel/plugin-transform-spread/LICENSE +1 -1
  273. data/lib/condenser/processors/node_modules/@babel/plugin-transform-spread/lib/index.js +20 -36
  274. data/lib/condenser/processors/node_modules/@babel/plugin-transform-spread/package.json +13 -12
  275. data/lib/condenser/processors/node_modules/@babel/plugin-transform-sticky-regex/LICENSE +1 -1
  276. data/lib/condenser/processors/node_modules/@babel/plugin-transform-sticky-regex/lib/index.js +8 -30
  277. data/lib/condenser/processors/node_modules/@babel/plugin-transform-sticky-regex/package.json +13 -12
  278. data/lib/condenser/processors/node_modules/@babel/plugin-transform-template-literals/lib/index.js +19 -35
  279. data/lib/condenser/processors/node_modules/@babel/plugin-transform-template-literals/package.json +14 -14
  280. data/lib/condenser/processors/node_modules/@babel/plugin-transform-typeof-symbol/LICENSE +1 -1
  281. data/lib/condenser/processors/node_modules/@babel/plugin-transform-typeof-symbol/lib/index.js +7 -23
  282. data/lib/condenser/processors/node_modules/@babel/plugin-transform-typeof-symbol/package.json +13 -12
  283. data/lib/condenser/processors/node_modules/@babel/plugin-transform-unicode-regex/lib/index.js +6 -45
  284. data/lib/condenser/processors/node_modules/@babel/plugin-transform-unicode-regex/package.json +15 -16
  285. data/lib/condenser/processors/node_modules/@babel/preset-env/CONTRIBUTING.md +2 -2
  286. data/lib/condenser/processors/node_modules/@babel/preset-env/data/corejs2-built-in-features.js +25 -1
  287. data/lib/condenser/processors/node_modules/@babel/preset-env/data/corejs2-built-ins.json +3 -0
  288. data/lib/condenser/processors/node_modules/@babel/preset-env/data/overlapping-plugins.js +16 -0
  289. data/lib/condenser/processors/node_modules/@babel/preset-env/data/plugins.json +6 -0
  290. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/available-plugins.js +132 -42
  291. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/debug.js +10 -10
  292. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/filter-items.js +11 -11
  293. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/index.js +128 -81
  294. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/normalize-options.js +15 -39
  295. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/corejs2/usage-plugin.js +7 -6
  296. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/corejs3/built-in-definitions.js +2 -2
  297. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/corejs3/entry-plugin.js +48 -54
  298. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/corejs3/usage-plugin.js +37 -42
  299. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/regenerator/entry-plugin.js +7 -1
  300. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/polyfills/regenerator/usage-plugin.js +7 -1
  301. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/targets-parser.js +10 -35
  302. data/lib/condenser/processors/node_modules/@babel/preset-env/lib/utils.js +26 -56
  303. data/lib/condenser/processors/node_modules/@babel/preset-env/package.json +57 -57
  304. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/AsyncGenerator.js +1 -1
  305. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/asyncGeneratorDelegate.js +5 -0
  306. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/classStaticPrivateFieldSpecGet.js +4 -0
  307. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/classStaticPrivateFieldSpecSet.js +8 -3
  308. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/AsyncGenerator.js +1 -1
  309. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/asyncGeneratorDelegate.js +5 -0
  310. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/classStaticPrivateFieldSpecGet.js +4 -0
  311. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/classStaticPrivateFieldSpecSet.js +8 -3
  312. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/initializerWarningHelper.js +1 -1
  313. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/interopRequireWildcard.js +46 -16
  314. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimit.js +5 -0
  315. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimitLoose.js +5 -0
  316. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/jsx.js +12 -11
  317. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/objectSpread.js +1 -1
  318. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/objectSpread2.js +2 -2
  319. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/package.json +3 -0
  320. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/tdz.js +3 -0
  321. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/temporalRef.js +2 -5
  322. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/temporalUndefined.js +1 -1
  323. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js +3 -6
  324. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/esm/wrapRegExp.js +4 -4
  325. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/initializerWarningHelper.js +1 -1
  326. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/interopRequireWildcard.js +47 -16
  327. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js +6 -0
  328. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimitLoose.js +6 -0
  329. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/jsx.js +13 -11
  330. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/objectSpread.js +1 -1
  331. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/objectSpread2.js +2 -2
  332. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/tdz.js +5 -0
  333. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/temporalRef.js +3 -5
  334. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/temporalUndefined.js +3 -1
  335. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/typeof.js +3 -5
  336. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/helpers/wrapRegExp.js +4 -4
  337. data/lib/condenser/processors/node_modules/@babel/runtime-corejs3/package.json +6 -6
  338. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/AsyncGenerator.js +1 -1
  339. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js +5 -0
  340. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +4 -0
  341. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +8 -3
  342. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js +1 -1
  343. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js +5 -0
  344. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +4 -0
  345. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +8 -3
  346. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js +1 -1
  347. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js +45 -16
  348. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +4 -0
  349. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +4 -0
  350. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/jsx.js +10 -10
  351. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/objectSpread.js +1 -1
  352. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +2 -2
  353. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/package.json +3 -0
  354. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/tdz.js +3 -0
  355. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/temporalRef.js +2 -5
  356. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js +1 -1
  357. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/typeof.js +3 -5
  358. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js +4 -4
  359. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/initializerWarningHelper.js +1 -1
  360. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/interopRequireWildcard.js +45 -16
  361. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +4 -0
  362. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js +4 -0
  363. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/jsx.js +10 -10
  364. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/objectSpread.js +1 -1
  365. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/objectSpread2.js +2 -2
  366. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/tdz.js +5 -0
  367. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/temporalRef.js +3 -5
  368. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/temporalUndefined.js +3 -1
  369. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/typeof.js +3 -5
  370. data/lib/condenser/processors/node_modules/@babel/runtime/helpers/wrapRegExp.js +4 -4
  371. data/lib/condenser/processors/node_modules/@babel/runtime/package.json +13 -8
  372. data/lib/condenser/processors/node_modules/@babel/template/lib/index.js +3 -1
  373. data/lib/condenser/processors/node_modules/@babel/template/lib/options.js +1 -1
  374. data/lib/condenser/processors/node_modules/@babel/template/lib/parse.js +16 -38
  375. data/lib/condenser/processors/node_modules/@babel/template/lib/populate.js +20 -26
  376. data/lib/condenser/processors/node_modules/@babel/template/package.json +13 -13
  377. data/lib/condenser/processors/node_modules/@babel/traverse/lib/context.js +4 -10
  378. data/lib/condenser/processors/node_modules/@babel/traverse/lib/index.js +14 -24
  379. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/ancestry.js +5 -11
  380. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/comments.js +5 -11
  381. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/context.js +14 -10
  382. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/conversion.js +72 -107
  383. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/family.js +59 -13
  384. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/index.js +79 -42
  385. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/inference/index.js +20 -26
  386. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js +11 -17
  387. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/inference/inferers.js +40 -46
  388. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/introspection.js +122 -70
  389. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/lib/hoister.js +19 -14
  390. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/lib/virtual-types.js +22 -28
  391. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/modification.js +9 -15
  392. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/removal.js +3 -2
  393. data/lib/condenser/processors/node_modules/@babel/traverse/lib/path/replacement.js +27 -49
  394. data/lib/condenser/processors/node_modules/@babel/traverse/lib/scope/index.js +62 -104
  395. data/lib/condenser/processors/node_modules/@babel/traverse/lib/scope/lib/renamer.js +10 -24
  396. data/lib/condenser/processors/node_modules/@babel/traverse/lib/visitors.js +9 -23
  397. data/lib/condenser/processors/node_modules/@babel/traverse/package.json +17 -17
  398. data/lib/condenser/processors/node_modules/@babel/types/lib/asserts/generated/index.js +85 -20
  399. data/lib/condenser/processors/node_modules/@babel/types/lib/builders/builder.js +2 -10
  400. data/lib/condenser/processors/node_modules/@babel/types/lib/builders/generated/index.js +74 -19
  401. data/lib/condenser/processors/node_modules/@babel/types/lib/constants/generated/index.js +5 -1
  402. data/lib/condenser/processors/node_modules/@babel/types/lib/converters/valueToNode.js +4 -20
  403. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/core.js +7 -5
  404. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/es2015.js +13 -7
  405. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/experimental.js +14 -4
  406. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/flow.js +73 -1
  407. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/index.js +9 -17
  408. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/jsx.js +5 -3
  409. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/misc.js +11 -1
  410. data/lib/condenser/processors/node_modules/@babel/types/lib/definitions/typescript.js +11 -6
  411. data/lib/condenser/processors/node_modules/@babel/types/lib/index.d.ts +502 -44
  412. data/lib/condenser/processors/node_modules/@babel/types/lib/index.js.flow +182 -40
  413. data/lib/condenser/processors/node_modules/@babel/types/lib/utils/inherit.js +2 -10
  414. data/lib/condenser/processors/node_modules/@babel/types/lib/validators/generated/index.js +232 -24
  415. data/lib/condenser/processors/node_modules/@babel/types/lib/validators/isValidIdentifier.js +3 -11
  416. data/lib/condenser/processors/node_modules/@babel/types/package.json +16 -13
  417. data/lib/condenser/processors/node_modules/@babel/types/scripts/generators/flow.js +98 -5
  418. data/lib/condenser/processors/node_modules/@babel/types/scripts/generators/generateAsserts.js +2 -1
  419. data/lib/condenser/processors/node_modules/@babel/types/scripts/generators/typescript.js +175 -17
  420. data/lib/condenser/processors/node_modules/@babel/types/scripts/utils/formatBuilderName.js +2 -1
  421. data/lib/condenser/processors/node_modules/@types/estree/README.md +4 -4
  422. data/lib/condenser/processors/node_modules/@types/estree/flow.d.ts +174 -0
  423. data/lib/condenser/processors/node_modules/@types/estree/index.d.ts +554 -548
  424. data/lib/condenser/processors/node_modules/@types/estree/package.json +16 -15
  425. data/lib/condenser/processors/node_modules/@types/node/README.md +5 -5
  426. data/lib/condenser/processors/node_modules/@types/node/assert.d.ts +4 -6
  427. data/lib/condenser/processors/node_modules/@types/node/async_hooks.d.ts +1 -1
  428. data/lib/condenser/processors/node_modules/@types/node/child_process.d.ts +176 -51
  429. data/lib/condenser/processors/node_modules/@types/node/cluster.d.ts +9 -3
  430. data/lib/condenser/processors/node_modules/@types/node/constants.d.ts +6 -276
  431. data/lib/condenser/processors/node_modules/@types/node/crypto.d.ts +59 -46
  432. data/lib/condenser/processors/node_modules/@types/node/dgram.d.ts +54 -15
  433. data/lib/condenser/processors/node_modules/@types/node/domain.d.ts +5 -5
  434. data/lib/condenser/processors/node_modules/@types/node/events.d.ts +12 -2
  435. data/lib/condenser/processors/node_modules/@types/node/fs.d.ts +208 -47
  436. data/lib/condenser/processors/node_modules/@types/node/globals.d.ts +56 -131
  437. data/lib/condenser/processors/node_modules/@types/node/http.d.ts +18 -9
  438. data/lib/condenser/processors/node_modules/@types/node/http2.d.ts +36 -49
  439. data/lib/condenser/processors/node_modules/@types/node/index.d.ts +8 -25
  440. data/lib/condenser/processors/node_modules/@types/node/module.d.ts +18 -1
  441. data/lib/condenser/processors/node_modules/@types/node/net.d.ts +23 -4
  442. data/lib/condenser/processors/node_modules/@types/node/os.d.ts +157 -127
  443. data/lib/condenser/processors/node_modules/@types/node/package.json +33 -17
  444. data/lib/condenser/processors/node_modules/@types/node/path.d.ts +146 -152
  445. data/lib/condenser/processors/node_modules/@types/node/process.d.ts +12 -0
  446. data/lib/condenser/processors/node_modules/@types/node/querystring.d.ts +1 -4
  447. data/lib/condenser/processors/node_modules/@types/node/readline.d.ts +8 -1
  448. data/lib/condenser/processors/node_modules/@types/node/repl.d.ts +2 -2
  449. data/lib/condenser/processors/node_modules/@types/node/stream.d.ts +18 -1
  450. data/lib/condenser/processors/node_modules/@types/node/tls.d.ts +295 -11
  451. data/lib/condenser/processors/node_modules/@types/node/trace_events.d.ts +3 -3
  452. data/lib/condenser/processors/node_modules/@types/node/ts3.2/fs.d.ts +33 -0
  453. data/lib/condenser/processors/node_modules/@types/node/ts3.2/index.d.ts +1 -5
  454. data/lib/condenser/processors/node_modules/@types/node/ts3.2/util.d.ts +0 -6
  455. data/lib/condenser/processors/node_modules/@types/node/tty.d.ts +2 -1
  456. data/lib/condenser/processors/node_modules/@types/node/url.d.ts +24 -18
  457. data/lib/condenser/processors/node_modules/@types/node/util.d.ts +34 -14
  458. data/lib/condenser/processors/node_modules/@types/node/v8.d.ts +135 -0
  459. data/lib/condenser/processors/node_modules/@types/node/vm.d.ts +15 -0
  460. data/lib/condenser/processors/node_modules/@types/node/worker_threads.d.ts +8 -0
  461. data/lib/condenser/processors/node_modules/@types/node/zlib.d.ts +2 -2
  462. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/CHANGELOG.md +12 -2
  463. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/LICENSE +0 -0
  464. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/README.md +4 -3
  465. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/bin/acorn +0 -0
  466. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/acorn.d.ts +1 -1
  467. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/acorn.js +25 -3
  468. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/acorn.js.map +0 -0
  469. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/acorn.mjs +25 -3
  470. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/acorn.mjs.map +0 -0
  471. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/dist/bin.js +0 -0
  472. data/lib/condenser/processors/node_modules/{rollup/node_modules/acorn → acorn}/package.json +11 -11
  473. data/lib/condenser/processors/node_modules/browserslist/CHANGELOG.md +29 -0
  474. data/lib/condenser/processors/node_modules/browserslist/README.md +52 -38
  475. data/lib/condenser/processors/node_modules/browserslist/index.js +146 -86
  476. data/lib/condenser/processors/node_modules/browserslist/node.js +67 -37
  477. data/lib/condenser/processors/node_modules/browserslist/package.json +20 -9
  478. data/lib/condenser/processors/node_modules/caniuse-lite/CHANGELOG.md +24 -0
  479. data/lib/condenser/processors/node_modules/caniuse-lite/README.md +7 -1
  480. data/lib/condenser/processors/node_modules/caniuse-lite/data/agents.js +1 -1
  481. data/lib/condenser/processors/node_modules/caniuse-lite/data/browserVersions.js +1 -1
  482. data/lib/condenser/processors/node_modules/caniuse-lite/data/features.js +1 -1
  483. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/aac.js +1 -1
  484. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/abortcontroller.js +1 -1
  485. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ac3-ec3.js +1 -1
  486. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/accelerometer.js +1 -1
  487. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/addeventlistener.js +1 -1
  488. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/alternate-stylesheet.js +1 -1
  489. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ambient-light.js +1 -1
  490. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/apng.js +1 -1
  491. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/array-find-index.js +1 -1
  492. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/array-find.js +1 -1
  493. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/array-flat.js +1 -1
  494. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/array-includes.js +1 -1
  495. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/arrow-functions.js +1 -1
  496. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/asmjs.js +1 -1
  497. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/async-clipboard.js +1 -1
  498. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/async-functions.js +1 -1
  499. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/async-iterations-and-generators.js +1 -1
  500. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/atob-btoa.js +1 -1
  501. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/audio-api.js +1 -1
  502. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/audio.js +1 -1
  503. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/audiotracks.js +1 -1
  504. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/autofocus.js +1 -1
  505. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/auxclick.js +1 -1
  506. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/av1.js +1 -1
  507. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-attachment.js +1 -1
  508. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-clip-text.js +1 -1
  509. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-img-opts.js +1 -1
  510. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-position-x-y.js +1 -1
  511. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-repeat-round-space.js +1 -1
  512. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/background-sync.js +1 -1
  513. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/battery-status.js +1 -1
  514. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/beacon.js +1 -1
  515. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/beforeafterprint.js +1 -1
  516. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/bigint.js +1 -1
  517. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/blobbuilder.js +1 -1
  518. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/bloburls.js +1 -1
  519. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/border-image.js +1 -1
  520. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/border-radius.js +1 -1
  521. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/broadcastchannel.js +1 -1
  522. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/brotli.js +1 -1
  523. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/calc.js +1 -1
  524. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/canvas-blending.js +1 -1
  525. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/canvas-text.js +1 -1
  526. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/canvas.js +1 -1
  527. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ch-unit.js +1 -1
  528. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/chacha20-poly1305.js +1 -1
  529. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/channel-messaging.js +1 -1
  530. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/childnode-remove.js +1 -1
  531. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/classlist.js +1 -1
  532. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/clear-site-data-header.js +1 -1
  533. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js +1 -1
  534. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/clipboard.js +1 -1
  535. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/comparedocumentposition.js +1 -1
  536. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/console-basic.js +1 -1
  537. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/console-time.js +1 -1
  538. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/const.js +1 -1
  539. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/constraint-validation.js +1 -1
  540. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/contenteditable.js +1 -1
  541. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js +1 -1
  542. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js +1 -1
  543. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/cors.js +1 -1
  544. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/createimagebitmap.js +1 -1
  545. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/credential-management.js +1 -1
  546. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/cryptography.js +1 -1
  547. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-all.js +1 -1
  548. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-animation.js +1 -1
  549. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-any-link.js +1 -1
  550. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-appearance.js +1 -1
  551. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-apply-rule.js +1 -1
  552. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-at-counter-style.js +1 -1
  553. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-backdrop-filter.js +1 -1
  554. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-background-offsets.js +1 -1
  555. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js +1 -1
  556. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js +1 -1
  557. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-boxshadow.js +1 -1
  558. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-canvas.js +1 -1
  559. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-caret-color.js +1 -1
  560. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-case-insensitive.js +1 -1
  561. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-clip-path.js +1 -1
  562. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-color-adjust.js +1 -1
  563. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-conic-gradients.js +1 -1
  564. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-containment.js +1 -1
  565. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-counters.js +1 -1
  566. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-crisp-edges.js +1 -1
  567. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-cross-fade.js +1 -1
  568. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-default-pseudo.js +1 -1
  569. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js +1 -1
  570. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-deviceadaptation.js +1 -1
  571. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-dir-pseudo.js +1 -1
  572. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-display-contents.js +1 -1
  573. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-element-function.js +1 -1
  574. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-env-function.js +1 -1
  575. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-exclusions.js +1 -1
  576. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-featurequeries.js +1 -1
  577. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-filter-function.js +1 -1
  578. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-filters.js +1 -1
  579. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-first-letter.js +1 -1
  580. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-first-line.js +1 -1
  581. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-fixed.js +1 -1
  582. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-focus-visible.js +1 -1
  583. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-focus-within.js +1 -1
  584. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js +1 -1
  585. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-font-stretch.js +1 -1
  586. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-gencontent.js +1 -1
  587. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-gradients.js +1 -1
  588. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-grid.js +1 -1
  589. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js +1 -1
  590. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-has.js +1 -1
  591. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-hyphenate.js +1 -1
  592. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-hyphens.js +1 -1
  593. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-image-orientation.js +1 -1
  594. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-image-set.js +1 -1
  595. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-in-out-of-range.js +1 -1
  596. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js +1 -1
  597. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-initial-letter.js +1 -1
  598. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-initial-value.js +1 -1
  599. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-letter-spacing.js +1 -1
  600. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-line-clamp.js +1 -1
  601. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-logical-props.js +1 -1
  602. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-marker-pseudo.js +1 -1
  603. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-masks.js +1 -1
  604. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-matches-pseudo.js +1 -1
  605. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-math-functions.js +1 -1
  606. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-media-interaction.js +1 -1
  607. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-media-resolution.js +1 -1
  608. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-media-scripting.js +1 -1
  609. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-mediaqueries.js +1 -1
  610. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-mixblendmode.js +1 -1
  611. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-motion-paths.js +1 -1
  612. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-namespaces.js +1 -1
  613. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-not-sel-list.js +1 -1
  614. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-nth-child-of.js +1 -1
  615. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-opacity.js +1 -1
  616. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-optional-pseudo.js +1 -1
  617. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-overflow-anchor.js +1 -1
  618. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-overflow.js +1 -1
  619. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js +1 -1
  620. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-page-break.js +1 -1
  621. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-paged-media.js +1 -1
  622. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-paint-api.js +1 -1
  623. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-placeholder-shown.js +1 -1
  624. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-placeholder.js +1 -1
  625. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-read-only-write.js +1 -1
  626. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-rebeccapurple.js +1 -1
  627. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-reflections.js +1 -1
  628. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-regions.js +1 -1
  629. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-repeating-gradients.js +1 -1
  630. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-resize.js +1 -1
  631. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-revert-value.js +1 -1
  632. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-rrggbbaa.js +1 -1
  633. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-scroll-behavior.js +1 -1
  634. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-scrollbar.js +1 -1
  635. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-sel2.js +1 -1
  636. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-sel3.js +1 -1
  637. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-selection.js +1 -1
  638. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-shapes.js +1 -1
  639. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-snappoints.js +1 -1
  640. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-sticky.js +1 -1
  641. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-subgrid.js +1 -1
  642. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-supports-api.js +1 -1
  643. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-table.js +1 -1
  644. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-text-align-last.js +1 -1
  645. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-text-indent.js +1 -1
  646. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-text-justify.js +1 -1
  647. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-text-orientation.js +1 -1
  648. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-text-spacing.js +1 -1
  649. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-textshadow.js +1 -1
  650. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-touch-action-2.js +1 -1
  651. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-touch-action.js +1 -1
  652. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-transitions.js +1 -1
  653. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-unicode-bidi.js +1 -1
  654. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-unset-value.js +1 -1
  655. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-variables.js +1 -1
  656. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-widows-orphans.js +1 -1
  657. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-writing-mode.js +1 -1
  658. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css-zoom.js +1 -1
  659. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-attr.js +1 -1
  660. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-boxsizing.js +1 -1
  661. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-colors.js +1 -1
  662. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-cursors-grab.js +1 -1
  663. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-cursors-newer.js +1 -1
  664. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-cursors.js +1 -1
  665. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/css3-tabsize.js +1 -1
  666. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/currentcolor.js +1 -1
  667. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/custom-elements.js +1 -1
  668. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/custom-elementsv1.js +1 -1
  669. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/customevent.js +1 -1
  670. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/datalist.js +1 -1
  671. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dataset.js +1 -1
  672. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/datauri.js +1 -1
  673. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js +1 -1
  674. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/details.js +1 -1
  675. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/deviceorientation.js +1 -1
  676. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/devicepixelratio.js +1 -1
  677. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dialog.js +1 -1
  678. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dispatchevent.js +1 -1
  679. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/do-not-track.js +1 -1
  680. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/document-currentscript.js +1 -1
  681. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js +1 -1
  682. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/document-execcommand.js +1 -1
  683. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/document-scrollingelement.js +1 -1
  684. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/documenthead.js +1 -1
  685. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dom-manip-convenience.js +1 -1
  686. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dom-range.js +1 -1
  687. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/domcontentloaded.js +1 -1
  688. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js +1 -1
  689. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dommatrix.js +1 -1
  690. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/download.js +1 -1
  691. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/dragndrop.js +1 -1
  692. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/element-closest.js +1 -1
  693. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/element-from-point.js +1 -1
  694. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/element-scroll-methods.js +1 -1
  695. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/eme.js +1 -1
  696. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/eot.js +1 -1
  697. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es5.js +1 -1
  698. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-class.js +1 -1
  699. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-generators.js +1 -1
  700. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js +1 -1
  701. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-module.js +1 -1
  702. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-number.js +1 -1
  703. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6-string-includes.js +1 -1
  704. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/es6.js +1 -1
  705. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/eventsource.js +1 -1
  706. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/feature-policy.js +1 -1
  707. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/fetch.js +1 -1
  708. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/fieldset-disabled.js +1 -1
  709. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/fileapi.js +1 -1
  710. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/filereader.js +1 -1
  711. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/filereadersync.js +1 -1
  712. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/filesystem.js +1 -1
  713. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/flac.js +1 -1
  714. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/flexbox-gap.js +1 -1
  715. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/flexbox.js +1 -1
  716. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/flow-root.js +1 -1
  717. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/focusin-focusout-events.js +1 -1
  718. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js +1 -1
  719. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-family-system-ui.js +1 -1
  720. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-feature.js +1 -1
  721. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-kerning.js +1 -1
  722. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-loading.js +1 -1
  723. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-size-adjust.js +1 -1
  724. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-smooth.js +1 -1
  725. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-unicode-range.js +1 -1
  726. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-variant-alternates.js +1 -1
  727. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-variant-east-asian.js +1 -1
  728. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/font-variant-numeric.js +1 -1
  729. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/fontface.js +1 -1
  730. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/form-attribute.js +1 -1
  731. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/form-submit-attributes.js +1 -1
  732. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/form-validation.js +1 -1
  733. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/forms.js +1 -1
  734. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/fullscreen.js +1 -1
  735. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/gamepad.js +1 -1
  736. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/geolocation.js +1 -1
  737. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/getboundingclientrect.js +1 -1
  738. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/getcomputedstyle.js +1 -1
  739. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/getelementsbyclassname.js +1 -1
  740. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/getrandomvalues.js +1 -1
  741. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/gyroscope.js +1 -1
  742. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/hardwareconcurrency.js +1 -1
  743. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/hashchange.js +1 -1
  744. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/heif.js +1 -1
  745. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/hevc.js +1 -1
  746. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/hidden.js +1 -1
  747. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/high-resolution-time.js +1 -1
  748. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/history.js +1 -1
  749. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/html-media-capture.js +1 -1
  750. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/html5semantic.js +1 -1
  751. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/http-live-streaming.js +1 -1
  752. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/http2.js +1 -1
  753. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/http3.js +1 -0
  754. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/iframe-sandbox.js +1 -1
  755. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/iframe-seamless.js +1 -1
  756. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/iframe-srcdoc.js +1 -1
  757. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/imagecapture.js +1 -1
  758. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ime.js +1 -1
  759. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js +1 -1
  760. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/imports.js +1 -1
  761. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js +1 -1
  762. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/indexeddb.js +1 -1
  763. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/indexeddb2.js +1 -1
  764. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/inline-block.js +1 -1
  765. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/innertext.js +1 -1
  766. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js +1 -1
  767. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-color.js +1 -1
  768. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-datetime.js +1 -1
  769. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-email-tel-url.js +1 -1
  770. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-event.js +1 -1
  771. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-file-accept.js +1 -1
  772. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-file-directory.js +1 -1
  773. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-file-multiple.js +1 -1
  774. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-inputmode.js +1 -1
  775. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-minlength.js +1 -1
  776. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-number.js +1 -1
  777. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-pattern.js +1 -1
  778. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-placeholder.js +1 -1
  779. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-range.js +1 -1
  780. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-search.js +1 -1
  781. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/input-selection.js +1 -1
  782. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/insert-adjacent.js +1 -1
  783. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/insertadjacenthtml.js +1 -1
  784. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/internationalization.js +1 -1
  785. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/intersectionobserver.js +1 -1
  786. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/intl-pluralrules.js +1 -1
  787. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/intrinsic-width.js +1 -1
  788. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/jpeg2000.js +1 -1
  789. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/jpegxr.js +1 -1
  790. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js +1 -1
  791. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/json.js +1 -1
  792. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js +1 -1
  793. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js +1 -1
  794. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js +1 -1
  795. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-code.js +1 -1
  796. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js +1 -1
  797. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-key.js +1 -1
  798. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-location.js +1 -1
  799. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/keyboardevent-which.js +1 -1
  800. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/lazyload.js +1 -1
  801. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/let.js +1 -1
  802. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-icon-png.js +1 -1
  803. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-icon-svg.js +1 -1
  804. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js +1 -1
  805. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js +1 -1
  806. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-preconnect.js +1 -1
  807. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-prefetch.js +1 -1
  808. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-preload.js +1 -1
  809. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/link-rel-prerender.js +1 -1
  810. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/loading-lazy-attr.js +1 -1
  811. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/localecompare.js +1 -1
  812. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/magnetometer.js +1 -1
  813. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/matchesselector.js +1 -1
  814. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/matchmedia.js +1 -1
  815. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mathml.js +1 -1
  816. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/maxlength.js +1 -1
  817. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/media-attribute.js +1 -1
  818. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/media-fragments.js +1 -1
  819. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/media-session-api.js +1 -1
  820. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js +1 -1
  821. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mediarecorder.js +1 -1
  822. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mediasource.js +1 -1
  823. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/menu.js +1 -1
  824. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/meta-theme-color.js +1 -1
  825. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/meter.js +1 -1
  826. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/midi.js +1 -1
  827. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/minmaxwh.js +1 -1
  828. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mp3.js +1 -1
  829. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mpeg-dash.js +1 -1
  830. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mpeg4.js +1 -1
  831. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/multibackgrounds.js +1 -1
  832. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/multicolumn.js +1 -1
  833. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mutation-events.js +1 -1
  834. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/mutationobserver.js +1 -1
  835. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/namevalue-storage.js +1 -1
  836. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/native-filesystem-api.js +1 -0
  837. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/nav-timing.js +1 -1
  838. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/navigator-language.js +1 -1
  839. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/netinfo.js +1 -1
  840. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/node-contains.js +1 -1
  841. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/node-parentelement.js +1 -1
  842. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/notifications.js +1 -1
  843. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/object-entries.js +1 -1
  844. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/object-fit.js +1 -1
  845. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/object-observe.js +1 -1
  846. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/object-values.js +1 -1
  847. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/objectrtc.js +1 -1
  848. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/offline-apps.js +1 -1
  849. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/offscreencanvas.js +1 -1
  850. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ogg-vorbis.js +1 -1
  851. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ogv.js +1 -1
  852. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ol-reversed.js +1 -1
  853. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/once-event-listener.js +1 -1
  854. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/online-status.js +1 -1
  855. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/opus.js +1 -1
  856. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/orientation-sensor.js +1 -1
  857. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/outline.js +1 -1
  858. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/pad-start-end.js +1 -1
  859. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/page-transition-events.js +1 -1
  860. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/pagevisibility.js +1 -1
  861. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/passive-event-listener.js +1 -1
  862. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/passwordrules.js +1 -1
  863. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/path2d.js +1 -1
  864. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/payment-request.js +1 -1
  865. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/permissions-api.js +1 -1
  866. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/picture-in-picture.js +1 -1
  867. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/picture.js +1 -1
  868. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ping.js +1 -1
  869. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/png-alpha.js +1 -1
  870. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/pointer-events.js +1 -1
  871. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/pointer.js +1 -1
  872. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/pointerlock.js +1 -1
  873. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/prefers-color-scheme.js +1 -1
  874. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js +1 -1
  875. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/private-class-fields.js +1 -1
  876. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js +1 -1
  877. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/progress.js +1 -1
  878. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/promise-finally.js +1 -1
  879. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/promises.js +1 -1
  880. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/proximity.js +1 -1
  881. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/proxy.js +1 -1
  882. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/public-class-fields.js +1 -1
  883. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/publickeypinning.js +1 -1
  884. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/push-api.js +1 -1
  885. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/queryselector.js +1 -1
  886. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/readonly-attr.js +1 -1
  887. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/referrer-policy.js +1 -1
  888. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/registerprotocolhandler.js +1 -1
  889. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rel-noopener.js +1 -1
  890. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rel-noreferrer.js +1 -1
  891. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rellist.js +1 -1
  892. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rem.js +1 -1
  893. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/replace-all.js +1 -0
  894. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/requestanimationframe.js +1 -1
  895. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/requestidlecallback.js +1 -1
  896. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/resizeobserver.js +1 -1
  897. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/resource-timing.js +1 -1
  898. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rest-parameters.js +1 -1
  899. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/rtcpeerconnection.js +1 -1
  900. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ruby.js +1 -1
  901. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/run-in.js +1 -1
  902. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js +1 -1
  903. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/screen-orientation.js +1 -1
  904. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/script-async.js +1 -1
  905. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/script-defer.js +1 -1
  906. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/scrollintoview.js +1 -1
  907. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js +1 -1
  908. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sdch.js +1 -1
  909. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/selection-api.js +1 -1
  910. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/server-timing.js +1 -1
  911. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/serviceworkers.js +1 -1
  912. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/setimmediate.js +1 -1
  913. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sha-2.js +1 -1
  914. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/shadowdom.js +1 -1
  915. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/shadowdomv1.js +1 -1
  916. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sharedarraybuffer.js +1 -1
  917. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sharedworkers.js +1 -1
  918. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sni.js +1 -1
  919. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/spdy.js +1 -1
  920. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/speech-recognition.js +1 -1
  921. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/speech-synthesis.js +1 -1
  922. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/spellcheck-attribute.js +1 -1
  923. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sql-storage.js +1 -1
  924. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/srcset.js +1 -1
  925. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/stopimmediatepropagation.js +1 -1
  926. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/stream.js +1 -1
  927. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/streams.js +1 -1
  928. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/stricttransportsecurity.js +1 -1
  929. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/style-scoped.js +1 -1
  930. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/subresource-integrity.js +1 -1
  931. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-css.js +1 -1
  932. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-filters.js +1 -1
  933. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-fonts.js +1 -1
  934. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-fragment.js +1 -1
  935. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-html.js +1 -1
  936. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-html5.js +1 -1
  937. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-img.js +1 -1
  938. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg-smil.js +1 -1
  939. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/svg.js +1 -1
  940. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/sxg.js +1 -0
  941. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/symbols.js +1 -1
  942. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/tabindex-attr.js +1 -1
  943. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/template-literals.js +1 -1
  944. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/template.js +1 -1
  945. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/testfeat.js +1 -1
  946. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-decoration.js +1 -1
  947. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-emphasis.js +1 -1
  948. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-overflow.js +1 -1
  949. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-size-adjust.js +1 -1
  950. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-stroke.js +1 -1
  951. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/text-underline-offset.js +1 -0
  952. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/textcontent.js +1 -1
  953. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/textencoder.js +1 -1
  954. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/tls1-1.js +1 -1
  955. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/tls1-2.js +1 -1
  956. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/tls1-3.js +1 -1
  957. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/token-binding.js +1 -1
  958. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/touch.js +1 -1
  959. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/transforms2d.js +1 -1
  960. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/transforms3d.js +1 -1
  961. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/ttf.js +1 -1
  962. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/typedarrays.js +1 -1
  963. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/u2f.js +1 -1
  964. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/unhandledrejection.js +1 -1
  965. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js +1 -1
  966. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/url.js +1 -1
  967. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/urlsearchparams.js +1 -1
  968. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/use-strict.js +1 -1
  969. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/user-select-none.js +1 -1
  970. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/user-timing.js +1 -1
  971. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/variable-fonts.js +1 -1
  972. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/vibration.js +1 -1
  973. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/video.js +1 -1
  974. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/videotracks.js +1 -1
  975. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/viewport-units.js +1 -1
  976. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/wai-aria.js +1 -1
  977. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/wasm.js +1 -1
  978. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/wav.js +1 -1
  979. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/wbr-element.js +1 -1
  980. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/web-animation.js +1 -1
  981. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/web-app-manifest.js +1 -1
  982. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/web-bluetooth.js +1 -1
  983. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/web-share.js +1 -1
  984. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webauthn.js +1 -1
  985. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webgl.js +1 -1
  986. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webgl2.js +1 -1
  987. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webhid.js +1 -0
  988. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webm.js +1 -1
  989. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webp.js +1 -1
  990. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/websockets.js +1 -1
  991. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webusb.js +1 -1
  992. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webvr.js +1 -1
  993. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webvtt.js +1 -1
  994. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webworkers.js +1 -1
  995. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/webxr.js +1 -0
  996. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/will-change.js +1 -1
  997. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/woff.js +1 -1
  998. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/woff2.js +1 -1
  999. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/word-break.js +1 -1
  1000. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/wordwrap.js +1 -1
  1001. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/x-doc-messaging.js +1 -1
  1002. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/x-frame-options.js +1 -1
  1003. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/xhr2.js +1 -1
  1004. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/xhtml.js +1 -1
  1005. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/xhtmlsmil.js +1 -1
  1006. data/lib/condenser/processors/node_modules/caniuse-lite/data/features/xml-serializer.js +1 -1
  1007. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AD.js +1 -1
  1008. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AE.js +1 -1
  1009. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AF.js +1 -1
  1010. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AG.js +1 -1
  1011. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AI.js +1 -1
  1012. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AL.js +1 -1
  1013. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AM.js +1 -1
  1014. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AO.js +1 -1
  1015. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AR.js +1 -1
  1016. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AS.js +1 -1
  1017. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AT.js +1 -1
  1018. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AU.js +1 -1
  1019. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AW.js +1 -1
  1020. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AX.js +1 -1
  1021. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/AZ.js +1 -1
  1022. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BA.js +1 -1
  1023. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BB.js +1 -1
  1024. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BD.js +1 -1
  1025. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BE.js +1 -1
  1026. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BF.js +1 -1
  1027. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BG.js +1 -1
  1028. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BH.js +1 -1
  1029. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BI.js +1 -1
  1030. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BJ.js +1 -1
  1031. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BM.js +1 -1
  1032. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BN.js +1 -1
  1033. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BO.js +1 -1
  1034. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BR.js +1 -1
  1035. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BS.js +1 -1
  1036. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BT.js +1 -1
  1037. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BW.js +1 -1
  1038. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BY.js +1 -1
  1039. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/BZ.js +1 -1
  1040. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CA.js +1 -1
  1041. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CD.js +1 -1
  1042. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CF.js +1 -1
  1043. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CG.js +1 -1
  1044. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CH.js +1 -1
  1045. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CI.js +1 -1
  1046. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CK.js +1 -1
  1047. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CL.js +1 -1
  1048. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CM.js +1 -1
  1049. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CN.js +1 -1
  1050. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CO.js +1 -1
  1051. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CR.js +1 -1
  1052. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CU.js +1 -1
  1053. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CV.js +1 -1
  1054. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CX.js +1 -1
  1055. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CY.js +1 -1
  1056. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/CZ.js +1 -1
  1057. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DE.js +1 -1
  1058. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DJ.js +1 -1
  1059. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DK.js +1 -1
  1060. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DM.js +1 -1
  1061. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DO.js +1 -1
  1062. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/DZ.js +1 -1
  1063. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/EC.js +1 -1
  1064. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/EE.js +1 -1
  1065. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/EG.js +1 -1
  1066. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ER.js +1 -1
  1067. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ES.js +1 -1
  1068. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ET.js +1 -1
  1069. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FI.js +1 -1
  1070. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FJ.js +1 -1
  1071. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FK.js +1 -1
  1072. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FM.js +1 -1
  1073. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FO.js +1 -1
  1074. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/FR.js +1 -1
  1075. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GA.js +1 -1
  1076. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GB.js +1 -1
  1077. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GD.js +1 -1
  1078. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GE.js +1 -1
  1079. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GF.js +1 -1
  1080. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GG.js +1 -1
  1081. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GH.js +1 -1
  1082. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GI.js +1 -1
  1083. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GL.js +1 -1
  1084. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GM.js +1 -1
  1085. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GN.js +1 -1
  1086. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GP.js +1 -1
  1087. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GQ.js +1 -1
  1088. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GR.js +1 -1
  1089. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GT.js +1 -1
  1090. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GU.js +1 -1
  1091. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GW.js +1 -1
  1092. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/GY.js +1 -1
  1093. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/HK.js +1 -1
  1094. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/HN.js +1 -1
  1095. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/HR.js +1 -1
  1096. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/HT.js +1 -1
  1097. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/HU.js +1 -1
  1098. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ID.js +1 -1
  1099. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IE.js +1 -1
  1100. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IL.js +1 -1
  1101. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IM.js +1 -1
  1102. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IN.js +1 -1
  1103. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IQ.js +1 -1
  1104. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IR.js +1 -1
  1105. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IS.js +1 -1
  1106. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/IT.js +1 -1
  1107. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/JE.js +1 -1
  1108. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/JM.js +1 -1
  1109. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/JO.js +1 -1
  1110. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/JP.js +1 -1
  1111. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KE.js +1 -1
  1112. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KG.js +1 -1
  1113. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KH.js +1 -1
  1114. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KI.js +1 -1
  1115. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KM.js +1 -1
  1116. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KN.js +1 -1
  1117. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KP.js +1 -1
  1118. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KR.js +1 -1
  1119. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KW.js +1 -1
  1120. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KY.js +1 -1
  1121. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/KZ.js +1 -1
  1122. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LA.js +1 -1
  1123. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LB.js +1 -1
  1124. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LC.js +1 -1
  1125. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LI.js +1 -1
  1126. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LK.js +1 -1
  1127. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LR.js +1 -1
  1128. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LS.js +1 -1
  1129. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LT.js +1 -1
  1130. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LU.js +1 -1
  1131. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LV.js +1 -1
  1132. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/LY.js +1 -1
  1133. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MA.js +1 -1
  1134. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MC.js +1 -1
  1135. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MD.js +1 -1
  1136. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ME.js +1 -1
  1137. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MG.js +1 -1
  1138. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MH.js +1 -1
  1139. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MK.js +1 -1
  1140. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ML.js +1 -1
  1141. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MM.js +1 -1
  1142. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MN.js +1 -1
  1143. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MO.js +1 -1
  1144. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MP.js +1 -1
  1145. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MQ.js +1 -1
  1146. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MR.js +1 -1
  1147. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MS.js +1 -1
  1148. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MT.js +1 -1
  1149. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MU.js +1 -1
  1150. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MV.js +1 -1
  1151. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MW.js +1 -1
  1152. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MX.js +1 -1
  1153. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MY.js +1 -1
  1154. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/MZ.js +1 -1
  1155. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NA.js +1 -1
  1156. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NC.js +1 -1
  1157. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NE.js +1 -1
  1158. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NF.js +1 -1
  1159. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NG.js +1 -1
  1160. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NI.js +1 -1
  1161. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NL.js +1 -1
  1162. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NO.js +1 -1
  1163. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NP.js +1 -1
  1164. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NR.js +1 -1
  1165. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NU.js +1 -1
  1166. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/NZ.js +1 -1
  1167. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/OM.js +1 -1
  1168. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PA.js +1 -1
  1169. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PE.js +1 -1
  1170. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PF.js +1 -1
  1171. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PG.js +1 -1
  1172. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PH.js +1 -1
  1173. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PK.js +1 -1
  1174. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PL.js +1 -1
  1175. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PM.js +1 -1
  1176. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PN.js +1 -1
  1177. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PR.js +1 -1
  1178. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PS.js +1 -1
  1179. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PT.js +1 -1
  1180. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PW.js +1 -1
  1181. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/PY.js +1 -1
  1182. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/QA.js +1 -1
  1183. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/RE.js +1 -1
  1184. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/RO.js +1 -1
  1185. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/RS.js +1 -1
  1186. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/RU.js +1 -1
  1187. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/RW.js +1 -1
  1188. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SA.js +1 -1
  1189. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SB.js +1 -1
  1190. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SC.js +1 -1
  1191. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SD.js +1 -1
  1192. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SE.js +1 -1
  1193. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SG.js +1 -1
  1194. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SH.js +1 -1
  1195. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SI.js +1 -1
  1196. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SK.js +1 -1
  1197. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SL.js +1 -1
  1198. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SM.js +1 -1
  1199. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SN.js +1 -1
  1200. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SO.js +1 -1
  1201. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SR.js +1 -1
  1202. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ST.js +1 -1
  1203. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SV.js +1 -1
  1204. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SY.js +1 -1
  1205. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/SZ.js +1 -1
  1206. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TC.js +1 -1
  1207. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TD.js +1 -1
  1208. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TG.js +1 -1
  1209. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TH.js +1 -1
  1210. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TJ.js +1 -1
  1211. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TK.js +1 -1
  1212. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TL.js +1 -1
  1213. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TM.js +1 -1
  1214. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TN.js +1 -1
  1215. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TO.js +1 -1
  1216. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TR.js +1 -1
  1217. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TT.js +1 -1
  1218. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TV.js +1 -1
  1219. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TW.js +1 -1
  1220. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/TZ.js +1 -1
  1221. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/UA.js +1 -1
  1222. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/UG.js +1 -1
  1223. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/US.js +1 -1
  1224. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/UY.js +1 -1
  1225. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/UZ.js +1 -1
  1226. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VA.js +1 -1
  1227. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VC.js +1 -1
  1228. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VE.js +1 -1
  1229. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VG.js +1 -1
  1230. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VI.js +1 -1
  1231. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VN.js +1 -1
  1232. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/VU.js +1 -1
  1233. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/WF.js +1 -1
  1234. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/WS.js +1 -1
  1235. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/YE.js +1 -1
  1236. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/YT.js +1 -1
  1237. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ZA.js +1 -1
  1238. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ZM.js +1 -1
  1239. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/ZW.js +1 -1
  1240. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-af.js +1 -1
  1241. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-an.js +1 -1
  1242. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-as.js +1 -1
  1243. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-eu.js +1 -1
  1244. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-na.js +1 -1
  1245. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-oc.js +1 -1
  1246. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-sa.js +1 -1
  1247. data/lib/condenser/processors/node_modules/caniuse-lite/data/regions/alt-ww.js +1 -1
  1248. data/lib/condenser/processors/node_modules/caniuse-lite/package.json +10 -10
  1249. data/lib/condenser/processors/node_modules/convert-source-map/package.json +13 -10
  1250. data/lib/condenser/processors/node_modules/core-js-compat/LICENSE +1 -1
  1251. data/lib/condenser/processors/node_modules/core-js-compat/README.md +59 -23
  1252. data/lib/condenser/processors/node_modules/core-js-compat/compat.js +56 -0
  1253. data/lib/condenser/processors/node_modules/core-js-compat/data.json +1632 -1288
  1254. data/lib/condenser/processors/node_modules/core-js-compat/entries.json +5462 -4712
  1255. data/lib/condenser/processors/node_modules/core-js-compat/external.json +12 -0
  1256. data/lib/condenser/processors/node_modules/core-js-compat/get-modules-list-for-target-version.js +5 -4
  1257. data/lib/condenser/processors/node_modules/core-js-compat/helpers.js +29 -0
  1258. data/lib/condenser/processors/node_modules/core-js-compat/index.js +11 -102
  1259. data/lib/condenser/processors/node_modules/core-js-compat/modules-by-versions.json +45 -0
  1260. data/lib/condenser/processors/node_modules/core-js-compat/modules.json +336 -0
  1261. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/CHANGELOG.md +4 -0
  1262. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/README.md +58 -2
  1263. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/bin/semver.js +78 -79
  1264. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/classes/comparator.js +139 -0
  1265. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/classes/index.js +5 -0
  1266. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/classes/range.js +448 -0
  1267. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/classes/semver.js +290 -0
  1268. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/clean.js +6 -0
  1269. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/cmp.js +48 -0
  1270. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/coerce.js +51 -0
  1271. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/compare-build.js +7 -0
  1272. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/compare-loose.js +3 -0
  1273. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/compare.js +5 -0
  1274. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/diff.js +25 -0
  1275. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/eq.js +3 -0
  1276. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/gt.js +3 -0
  1277. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/gte.js +3 -0
  1278. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/inc.js +15 -0
  1279. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/lt.js +3 -0
  1280. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/lte.js +3 -0
  1281. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/major.js +3 -0
  1282. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/minor.js +3 -0
  1283. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/neq.js +3 -0
  1284. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/parse.js +37 -0
  1285. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/patch.js +3 -0
  1286. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/prerelease.js +6 -0
  1287. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/rcompare.js +3 -0
  1288. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/rsort.js +3 -0
  1289. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/satisfies.js +10 -0
  1290. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/sort.js +3 -0
  1291. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/functions/valid.js +6 -0
  1292. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/index.js +64 -0
  1293. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/internal/constants.js +17 -0
  1294. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/internal/debug.js +9 -0
  1295. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/internal/identifiers.js +23 -0
  1296. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/internal/re.js +179 -0
  1297. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/package.json +22 -16
  1298. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/gtr.js +4 -0
  1299. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/intersects.js +7 -0
  1300. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/ltr.js +4 -0
  1301. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/max-satisfying.js +25 -0
  1302. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/min-satisfying.js +24 -0
  1303. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/min-version.js +57 -0
  1304. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/outside.js +80 -0
  1305. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/to-comparators.js +8 -0
  1306. data/lib/condenser/processors/node_modules/core-js-compat/node_modules/semver/ranges/valid.js +11 -0
  1307. data/lib/condenser/processors/node_modules/core-js-compat/package.json +18 -14
  1308. data/lib/condenser/processors/node_modules/core-js-compat/targets-parser.js +72 -0
  1309. data/lib/condenser/processors/node_modules/core-js-pure/LICENSE +1 -1
  1310. data/lib/condenser/processors/node_modules/core-js-pure/configurator.js +7 -0
  1311. data/lib/condenser/processors/node_modules/core-js-pure/es/global-this.js +3 -0
  1312. data/lib/condenser/processors/node_modules/core-js-pure/es/index.js +6 -1
  1313. data/lib/condenser/processors/node_modules/core-js-pure/es/json/index.js +1 -0
  1314. data/lib/condenser/processors/node_modules/core-js-pure/es/json/stringify.js +6 -3
  1315. data/lib/condenser/processors/node_modules/core-js-pure/es/regexp/index.js +2 -0
  1316. data/lib/condenser/processors/node_modules/core-js-pure/es/regexp/sticky.js +5 -0
  1317. data/lib/condenser/processors/node_modules/core-js-pure/es/regexp/test.js +6 -0
  1318. data/lib/condenser/processors/node_modules/core-js-pure/es/string/index.js +1 -0
  1319. data/lib/condenser/processors/node_modules/core-js-pure/es/string/match.js +1 -0
  1320. data/lib/condenser/processors/node_modules/core-js-pure/es/string/replace.js +1 -0
  1321. data/lib/condenser/processors/node_modules/core-js-pure/es/string/search.js +1 -0
  1322. data/lib/condenser/processors/node_modules/core-js-pure/es/string/split.js +1 -0
  1323. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/async-iterator.js +1 -1
  1324. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/has-instance.js +1 -1
  1325. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/is-concat-spreadable.js +1 -1
  1326. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/iterator.js +1 -1
  1327. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/match-all.js +1 -1
  1328. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/match.js +1 -1
  1329. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/replace.js +1 -1
  1330. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/search.js +1 -1
  1331. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/species.js +1 -1
  1332. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/split.js +1 -1
  1333. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/to-primitive.js +1 -1
  1334. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/to-string-tag.js +1 -1
  1335. data/lib/condenser/processors/node_modules/core-js-pure/es/symbol/unscopables.js +1 -1
  1336. data/lib/condenser/processors/node_modules/core-js-pure/features/array-buffer/constructor.js +3 -1
  1337. data/lib/condenser/processors/node_modules/core-js-pure/features/array-buffer/index.js +3 -1
  1338. data/lib/condenser/processors/node_modules/core-js-pure/features/array-buffer/is-view.js +3 -1
  1339. data/lib/condenser/processors/node_modules/core-js-pure/features/array-buffer/slice.js +3 -1
  1340. data/lib/condenser/processors/node_modules/core-js-pure/features/array/concat.js +3 -1
  1341. data/lib/condenser/processors/node_modules/core-js-pure/features/array/copy-within.js +3 -1
  1342. data/lib/condenser/processors/node_modules/core-js-pure/features/array/entries.js +3 -1
  1343. data/lib/condenser/processors/node_modules/core-js-pure/features/array/every.js +3 -1
  1344. data/lib/condenser/processors/node_modules/core-js-pure/features/array/fill.js +3 -1
  1345. data/lib/condenser/processors/node_modules/core-js-pure/features/array/filter.js +3 -1
  1346. data/lib/condenser/processors/node_modules/core-js-pure/features/array/find-index.js +3 -1
  1347. data/lib/condenser/processors/node_modules/core-js-pure/features/array/find.js +3 -1
  1348. data/lib/condenser/processors/node_modules/core-js-pure/features/array/flat-map.js +3 -1
  1349. data/lib/condenser/processors/node_modules/core-js-pure/features/array/flat.js +3 -1
  1350. data/lib/condenser/processors/node_modules/core-js-pure/features/array/for-each.js +3 -1
  1351. data/lib/condenser/processors/node_modules/core-js-pure/features/array/from.js +3 -1
  1352. data/lib/condenser/processors/node_modules/core-js-pure/features/array/includes.js +3 -1
  1353. data/lib/condenser/processors/node_modules/core-js-pure/features/array/index-of.js +3 -1
  1354. data/lib/condenser/processors/node_modules/core-js-pure/features/array/index.js +3 -2
  1355. data/lib/condenser/processors/node_modules/core-js-pure/features/array/is-array.js +3 -1
  1356. data/lib/condenser/processors/node_modules/core-js-pure/features/array/iterator.js +3 -1
  1357. data/lib/condenser/processors/node_modules/core-js-pure/features/array/join.js +3 -1
  1358. data/lib/condenser/processors/node_modules/core-js-pure/features/array/keys.js +3 -1
  1359. data/lib/condenser/processors/node_modules/core-js-pure/features/array/last-index-of.js +3 -1
  1360. data/lib/condenser/processors/node_modules/core-js-pure/features/array/map.js +3 -1
  1361. data/lib/condenser/processors/node_modules/core-js-pure/features/array/of.js +3 -1
  1362. data/lib/condenser/processors/node_modules/core-js-pure/features/array/reduce-right.js +3 -1
  1363. data/lib/condenser/processors/node_modules/core-js-pure/features/array/reduce.js +3 -1
  1364. data/lib/condenser/processors/node_modules/core-js-pure/features/array/reverse.js +3 -1
  1365. data/lib/condenser/processors/node_modules/core-js-pure/features/array/slice.js +3 -1
  1366. data/lib/condenser/processors/node_modules/core-js-pure/features/array/some.js +3 -1
  1367. data/lib/condenser/processors/node_modules/core-js-pure/features/array/sort.js +3 -1
  1368. data/lib/condenser/processors/node_modules/core-js-pure/features/array/splice.js +3 -1
  1369. data/lib/condenser/processors/node_modules/core-js-pure/features/array/values.js +3 -1
  1370. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/concat.js +3 -1
  1371. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/copy-within.js +3 -1
  1372. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/entries.js +3 -1
  1373. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/every.js +3 -1
  1374. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/fill.js +3 -1
  1375. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/filter.js +3 -1
  1376. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/find-index.js +3 -1
  1377. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/find.js +3 -1
  1378. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/flat-map.js +3 -1
  1379. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/flat.js +3 -1
  1380. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/for-each.js +3 -1
  1381. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/includes.js +3 -1
  1382. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/index-of.js +3 -1
  1383. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/index.js +3 -1
  1384. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/iterator.js +3 -1
  1385. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/join.js +3 -1
  1386. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/keys.js +3 -1
  1387. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/last-index-of.js +3 -1
  1388. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/map.js +3 -1
  1389. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/reduce-right.js +3 -1
  1390. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/reduce.js +3 -1
  1391. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/reverse.js +3 -1
  1392. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/slice.js +3 -1
  1393. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/some.js +3 -1
  1394. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/sort.js +3 -1
  1395. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/splice.js +3 -1
  1396. data/lib/condenser/processors/node_modules/core-js-pure/features/array/virtual/values.js +3 -1
  1397. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/as-indexed-pairs.js +10 -0
  1398. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/drop.js +10 -0
  1399. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/every.js +10 -0
  1400. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/filter.js +10 -0
  1401. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/find.js +10 -0
  1402. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/flat-map.js +10 -0
  1403. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/for-each.js +10 -0
  1404. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/from.js +10 -0
  1405. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/index.js +22 -0
  1406. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/map.js +10 -0
  1407. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/reduce.js +10 -0
  1408. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/some.js +10 -0
  1409. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/take.js +10 -0
  1410. data/lib/condenser/processors/node_modules/core-js-pure/features/async-iterator/to-array.js +10 -0
  1411. data/lib/condenser/processors/node_modules/core-js-pure/features/clear-immediate.js +3 -1
  1412. data/lib/condenser/processors/node_modules/core-js-pure/features/data-view/index.js +3 -1
  1413. data/lib/condenser/processors/node_modules/core-js-pure/features/date/index.js +3 -1
  1414. data/lib/condenser/processors/node_modules/core-js-pure/features/date/now.js +3 -1
  1415. data/lib/condenser/processors/node_modules/core-js-pure/features/date/to-iso-string.js +3 -1
  1416. data/lib/condenser/processors/node_modules/core-js-pure/features/date/to-json.js +3 -1
  1417. data/lib/condenser/processors/node_modules/core-js-pure/features/date/to-primitive.js +3 -1
  1418. data/lib/condenser/processors/node_modules/core-js-pure/features/date/to-string.js +3 -1
  1419. data/lib/condenser/processors/node_modules/core-js-pure/features/dom-collections/for-each.js +3 -1
  1420. data/lib/condenser/processors/node_modules/core-js-pure/features/dom-collections/index.js +3 -1
  1421. data/lib/condenser/processors/node_modules/core-js-pure/features/dom-collections/iterator.js +3 -1
  1422. data/lib/condenser/processors/node_modules/core-js-pure/features/function/bind.js +3 -1
  1423. data/lib/condenser/processors/node_modules/core-js-pure/features/function/has-instance.js +3 -1
  1424. data/lib/condenser/processors/node_modules/core-js-pure/features/function/index.js +3 -1
  1425. data/lib/condenser/processors/node_modules/core-js-pure/features/function/name.js +3 -1
  1426. data/lib/condenser/processors/node_modules/core-js-pure/features/function/virtual/bind.js +3 -1
  1427. data/lib/condenser/processors/node_modules/core-js-pure/features/function/virtual/index.js +3 -1
  1428. data/lib/condenser/processors/node_modules/core-js-pure/features/get-iterator-method.js +2 -1
  1429. data/lib/condenser/processors/node_modules/core-js-pure/features/get-iterator.js +2 -1
  1430. data/lib/condenser/processors/node_modules/core-js-pure/features/global-this.js +4 -1
  1431. data/lib/condenser/processors/node_modules/core-js-pure/features/index.js +3 -1
  1432. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/bind.js +3 -1
  1433. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/code-point-at.js +3 -1
  1434. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/concat.js +3 -1
  1435. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/copy-within.js +3 -1
  1436. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/ends-with.js +3 -1
  1437. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/entries.js +3 -1
  1438. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/every.js +3 -1
  1439. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/fill.js +3 -1
  1440. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/filter.js +3 -1
  1441. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/find-index.js +3 -1
  1442. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/find.js +3 -1
  1443. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/flags.js +3 -1
  1444. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/flat-map.js +3 -1
  1445. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/flat.js +3 -1
  1446. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/for-each.js +3 -1
  1447. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/includes.js +3 -1
  1448. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/index-of.js +3 -1
  1449. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/keys.js +3 -1
  1450. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/last-index-of.js +3 -1
  1451. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/map.js +3 -1
  1452. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/match-all.js +6 -1
  1453. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/pad-end.js +3 -1
  1454. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/pad-start.js +3 -1
  1455. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/reduce-right.js +3 -1
  1456. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/reduce.js +3 -1
  1457. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/repeat.js +3 -1
  1458. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/reverse.js +3 -1
  1459. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/slice.js +3 -1
  1460. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/some.js +3 -1
  1461. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/sort.js +3 -1
  1462. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/splice.js +3 -1
  1463. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/starts-with.js +3 -1
  1464. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/trim-end.js +3 -1
  1465. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/trim-left.js +3 -1
  1466. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/trim-right.js +3 -1
  1467. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/trim-start.js +3 -1
  1468. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/trim.js +3 -1
  1469. data/lib/condenser/processors/node_modules/core-js-pure/features/instance/values.js +3 -1
  1470. data/lib/condenser/processors/node_modules/core-js-pure/features/is-iterable.js +2 -1
  1471. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/as-indexed-pairs.js +10 -0
  1472. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/drop.js +9 -0
  1473. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/every.js +9 -0
  1474. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/filter.js +9 -0
  1475. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/find.js +9 -0
  1476. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/flat-map.js +9 -0
  1477. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/for-each.js +9 -0
  1478. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/from.js +9 -0
  1479. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/index.js +21 -0
  1480. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/map.js +9 -0
  1481. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/reduce.js +9 -0
  1482. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/some.js +9 -0
  1483. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/take.js +9 -0
  1484. data/lib/condenser/processors/node_modules/core-js-pure/features/iterator/to-array.js +9 -0
  1485. data/lib/condenser/processors/node_modules/core-js-pure/features/json/index.js +3 -1
  1486. data/lib/condenser/processors/node_modules/core-js-pure/features/json/stringify.js +3 -1
  1487. data/lib/condenser/processors/node_modules/core-js-pure/features/json/to-string-tag.js +3 -1
  1488. data/lib/condenser/processors/node_modules/core-js-pure/features/map/index.js +5 -2
  1489. data/lib/condenser/processors/node_modules/core-js-pure/features/map/update-or-insert.js +1 -0
  1490. data/lib/condenser/processors/node_modules/core-js-pure/features/map/upsert.js +5 -0
  1491. data/lib/condenser/processors/node_modules/core-js-pure/features/math/acosh.js +3 -1
  1492. data/lib/condenser/processors/node_modules/core-js-pure/features/math/asinh.js +3 -1
  1493. data/lib/condenser/processors/node_modules/core-js-pure/features/math/atanh.js +3 -1
  1494. data/lib/condenser/processors/node_modules/core-js-pure/features/math/cbrt.js +3 -1
  1495. data/lib/condenser/processors/node_modules/core-js-pure/features/math/clz32.js +3 -1
  1496. data/lib/condenser/processors/node_modules/core-js-pure/features/math/cosh.js +3 -1
  1497. data/lib/condenser/processors/node_modules/core-js-pure/features/math/expm1.js +3 -1
  1498. data/lib/condenser/processors/node_modules/core-js-pure/features/math/fround.js +3 -1
  1499. data/lib/condenser/processors/node_modules/core-js-pure/features/math/hypot.js +3 -1
  1500. data/lib/condenser/processors/node_modules/core-js-pure/features/math/imul.js +3 -1
  1501. data/lib/condenser/processors/node_modules/core-js-pure/features/math/index.js +7 -5
  1502. data/lib/condenser/processors/node_modules/core-js-pure/features/math/log10.js +3 -1
  1503. data/lib/condenser/processors/node_modules/core-js-pure/features/math/log1p.js +3 -1
  1504. data/lib/condenser/processors/node_modules/core-js-pure/features/math/log2.js +3 -1
  1505. data/lib/condenser/processors/node_modules/core-js-pure/features/math/sign.js +3 -1
  1506. data/lib/condenser/processors/node_modules/core-js-pure/features/math/sinh.js +3 -1
  1507. data/lib/condenser/processors/node_modules/core-js-pure/features/math/tanh.js +3 -1
  1508. data/lib/condenser/processors/node_modules/core-js-pure/features/math/to-string-tag.js +3 -1
  1509. data/lib/condenser/processors/node_modules/core-js-pure/features/math/trunc.js +3 -1
  1510. data/lib/condenser/processors/node_modules/core-js-pure/features/number/constructor.js +3 -1
  1511. data/lib/condenser/processors/node_modules/core-js-pure/features/number/epsilon.js +3 -1
  1512. data/lib/condenser/processors/node_modules/core-js-pure/features/number/index.js +3 -1
  1513. data/lib/condenser/processors/node_modules/core-js-pure/features/number/is-finite.js +3 -1
  1514. data/lib/condenser/processors/node_modules/core-js-pure/features/number/is-integer.js +3 -1
  1515. data/lib/condenser/processors/node_modules/core-js-pure/features/number/is-nan.js +3 -1
  1516. data/lib/condenser/processors/node_modules/core-js-pure/features/number/is-safe-integer.js +3 -1
  1517. data/lib/condenser/processors/node_modules/core-js-pure/features/number/max-safe-integer.js +3 -1
  1518. data/lib/condenser/processors/node_modules/core-js-pure/features/number/min-safe-integer.js +3 -1
  1519. data/lib/condenser/processors/node_modules/core-js-pure/features/number/parse-float.js +3 -1
  1520. data/lib/condenser/processors/node_modules/core-js-pure/features/number/parse-int.js +3 -1
  1521. data/lib/condenser/processors/node_modules/core-js-pure/features/number/to-fixed.js +3 -1
  1522. data/lib/condenser/processors/node_modules/core-js-pure/features/number/to-precision.js +3 -1
  1523. data/lib/condenser/processors/node_modules/core-js-pure/features/number/virtual/index.js +3 -1
  1524. data/lib/condenser/processors/node_modules/core-js-pure/features/number/virtual/to-fixed.js +3 -1
  1525. data/lib/condenser/processors/node_modules/core-js-pure/features/number/virtual/to-precision.js +3 -1
  1526. data/lib/condenser/processors/node_modules/core-js-pure/features/object/assign.js +3 -1
  1527. data/lib/condenser/processors/node_modules/core-js-pure/features/object/create.js +3 -1
  1528. data/lib/condenser/processors/node_modules/core-js-pure/features/object/define-getter.js +3 -1
  1529. data/lib/condenser/processors/node_modules/core-js-pure/features/object/define-properties.js +3 -1
  1530. data/lib/condenser/processors/node_modules/core-js-pure/features/object/define-property.js +3 -1
  1531. data/lib/condenser/processors/node_modules/core-js-pure/features/object/define-setter.js +3 -1
  1532. data/lib/condenser/processors/node_modules/core-js-pure/features/object/entries.js +3 -1
  1533. data/lib/condenser/processors/node_modules/core-js-pure/features/object/freeze.js +3 -1
  1534. data/lib/condenser/processors/node_modules/core-js-pure/features/object/from-entries.js +3 -1
  1535. data/lib/condenser/processors/node_modules/core-js-pure/features/object/get-own-property-descriptor.js +3 -1
  1536. data/lib/condenser/processors/node_modules/core-js-pure/features/object/get-own-property-descriptors.js +3 -1
  1537. data/lib/condenser/processors/node_modules/core-js-pure/features/object/get-own-property-names.js +3 -1
  1538. data/lib/condenser/processors/node_modules/core-js-pure/features/object/get-own-property-symbols.js +3 -1
  1539. data/lib/condenser/processors/node_modules/core-js-pure/features/object/get-prototype-of.js +3 -1
  1540. data/lib/condenser/processors/node_modules/core-js-pure/features/object/index.js +6 -1
  1541. data/lib/condenser/processors/node_modules/core-js-pure/features/object/is-extensible.js +3 -1
  1542. data/lib/condenser/processors/node_modules/core-js-pure/features/object/is-frozen.js +3 -1
  1543. data/lib/condenser/processors/node_modules/core-js-pure/features/object/is-sealed.js +3 -1
  1544. data/lib/condenser/processors/node_modules/core-js-pure/features/object/is.js +3 -1
  1545. data/lib/condenser/processors/node_modules/core-js-pure/features/object/iterate-entries.js +4 -0
  1546. data/lib/condenser/processors/node_modules/core-js-pure/features/object/iterate-keys.js +4 -0
  1547. data/lib/condenser/processors/node_modules/core-js-pure/features/object/iterate-values.js +4 -0
  1548. data/lib/condenser/processors/node_modules/core-js-pure/features/object/keys.js +3 -1
  1549. data/lib/condenser/processors/node_modules/core-js-pure/features/object/lookup-getter.js +3 -1
  1550. data/lib/condenser/processors/node_modules/core-js-pure/features/object/lookup-setter.js +3 -1
  1551. data/lib/condenser/processors/node_modules/core-js-pure/features/object/prevent-extensions.js +3 -1
  1552. data/lib/condenser/processors/node_modules/core-js-pure/features/object/seal.js +3 -1
  1553. data/lib/condenser/processors/node_modules/core-js-pure/features/object/set-prototype-of.js +3 -1
  1554. data/lib/condenser/processors/node_modules/core-js-pure/features/object/to-string.js +3 -1
  1555. data/lib/condenser/processors/node_modules/core-js-pure/features/object/values.js +3 -1
  1556. data/lib/condenser/processors/node_modules/core-js-pure/features/parse-float.js +3 -1
  1557. data/lib/condenser/processors/node_modules/core-js-pure/features/parse-int.js +3 -1
  1558. data/lib/condenser/processors/node_modules/core-js-pure/features/promise/all-settled.js +3 -1
  1559. data/lib/condenser/processors/node_modules/core-js-pure/features/promise/finally.js +3 -1
  1560. data/lib/condenser/processors/node_modules/core-js-pure/features/promise/index.js +3 -2
  1561. data/lib/condenser/processors/node_modules/core-js-pure/features/queue-microtask.js +3 -1
  1562. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/apply.js +3 -1
  1563. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/construct.js +3 -1
  1564. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/define-property.js +3 -1
  1565. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/delete-property.js +3 -1
  1566. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/get-own-property-descriptor.js +3 -1
  1567. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/get-prototype-of.js +3 -1
  1568. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/get.js +3 -1
  1569. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/has.js +3 -1
  1570. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/index.js +3 -2
  1571. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/is-extensible.js +3 -1
  1572. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/own-keys.js +3 -1
  1573. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/prevent-extensions.js +3 -1
  1574. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/set-prototype-of.js +3 -1
  1575. data/lib/condenser/processors/node_modules/core-js-pure/features/reflect/set.js +3 -1
  1576. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/constructor.js +3 -1
  1577. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/flags.js +3 -1
  1578. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/index.js +3 -1
  1579. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/match.js +3 -1
  1580. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/replace.js +3 -1
  1581. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/search.js +3 -1
  1582. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/split.js +3 -1
  1583. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/sticky.js +3 -0
  1584. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/test.js +3 -0
  1585. data/lib/condenser/processors/node_modules/core-js-pure/features/regexp/to-string.js +3 -1
  1586. data/lib/condenser/processors/node_modules/core-js-pure/features/set-immediate.js +3 -1
  1587. data/lib/condenser/processors/node_modules/core-js-pure/features/set-interval.js +3 -1
  1588. data/lib/condenser/processors/node_modules/core-js-pure/features/set-timeout.js +3 -1
  1589. data/lib/condenser/processors/node_modules/core-js-pure/features/set/index.js +3 -2
  1590. data/lib/condenser/processors/node_modules/core-js-pure/features/string/anchor.js +3 -1
  1591. data/lib/condenser/processors/node_modules/core-js-pure/features/string/big.js +3 -1
  1592. data/lib/condenser/processors/node_modules/core-js-pure/features/string/blink.js +3 -1
  1593. data/lib/condenser/processors/node_modules/core-js-pure/features/string/bold.js +3 -1
  1594. data/lib/condenser/processors/node_modules/core-js-pure/features/string/code-point-at.js +3 -1
  1595. data/lib/condenser/processors/node_modules/core-js-pure/features/string/ends-with.js +3 -1
  1596. data/lib/condenser/processors/node_modules/core-js-pure/features/string/fixed.js +3 -1
  1597. data/lib/condenser/processors/node_modules/core-js-pure/features/string/fontcolor.js +3 -1
  1598. data/lib/condenser/processors/node_modules/core-js-pure/features/string/fontsize.js +3 -1
  1599. data/lib/condenser/processors/node_modules/core-js-pure/features/string/from-code-point.js +3 -1
  1600. data/lib/condenser/processors/node_modules/core-js-pure/features/string/includes.js +3 -1
  1601. data/lib/condenser/processors/node_modules/core-js-pure/features/string/index.js +4 -2
  1602. data/lib/condenser/processors/node_modules/core-js-pure/features/string/italics.js +3 -1
  1603. data/lib/condenser/processors/node_modules/core-js-pure/features/string/iterator.js +3 -1
  1604. data/lib/condenser/processors/node_modules/core-js-pure/features/string/link.js +3 -1
  1605. data/lib/condenser/processors/node_modules/core-js-pure/features/string/match-all.js +3 -1
  1606. data/lib/condenser/processors/node_modules/core-js-pure/features/string/match.js +3 -1
  1607. data/lib/condenser/processors/node_modules/core-js-pure/features/string/pad-end.js +3 -1
  1608. data/lib/condenser/processors/node_modules/core-js-pure/features/string/pad-start.js +3 -1
  1609. data/lib/condenser/processors/node_modules/core-js-pure/features/string/raw.js +3 -1
  1610. data/lib/condenser/processors/node_modules/core-js-pure/features/string/repeat.js +3 -1
  1611. data/lib/condenser/processors/node_modules/core-js-pure/features/string/replace.js +3 -1
  1612. data/lib/condenser/processors/node_modules/core-js-pure/features/string/search.js +3 -1
  1613. data/lib/condenser/processors/node_modules/core-js-pure/features/string/small.js +3 -1
  1614. data/lib/condenser/processors/node_modules/core-js-pure/features/string/split.js +3 -1
  1615. data/lib/condenser/processors/node_modules/core-js-pure/features/string/starts-with.js +3 -1
  1616. data/lib/condenser/processors/node_modules/core-js-pure/features/string/strike.js +3 -1
  1617. data/lib/condenser/processors/node_modules/core-js-pure/features/string/sub.js +3 -1
  1618. data/lib/condenser/processors/node_modules/core-js-pure/features/string/sup.js +3 -1
  1619. data/lib/condenser/processors/node_modules/core-js-pure/features/string/trim-end.js +3 -1
  1620. data/lib/condenser/processors/node_modules/core-js-pure/features/string/trim-left.js +3 -1
  1621. data/lib/condenser/processors/node_modules/core-js-pure/features/string/trim-right.js +3 -1
  1622. data/lib/condenser/processors/node_modules/core-js-pure/features/string/trim-start.js +3 -1
  1623. data/lib/condenser/processors/node_modules/core-js-pure/features/string/trim.js +3 -1
  1624. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/anchor.js +3 -1
  1625. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/big.js +3 -1
  1626. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/blink.js +3 -1
  1627. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/bold.js +3 -1
  1628. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/code-point-at.js +3 -1
  1629. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/ends-with.js +3 -1
  1630. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/fixed.js +3 -1
  1631. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/fontcolor.js +3 -1
  1632. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/fontsize.js +3 -1
  1633. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/includes.js +3 -1
  1634. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/index.js +4 -2
  1635. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/italics.js +3 -1
  1636. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/iterator.js +3 -1
  1637. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/link.js +3 -1
  1638. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/match-all.js +3 -1
  1639. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/pad-end.js +3 -1
  1640. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/pad-start.js +3 -1
  1641. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/repeat.js +3 -1
  1642. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/small.js +3 -1
  1643. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/starts-with.js +3 -1
  1644. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/strike.js +3 -1
  1645. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/sub.js +3 -1
  1646. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/sup.js +3 -1
  1647. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/trim-end.js +3 -1
  1648. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/trim-left.js +3 -1
  1649. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/trim-right.js +3 -1
  1650. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/trim-start.js +3 -1
  1651. data/lib/condenser/processors/node_modules/core-js-pure/features/string/virtual/trim.js +3 -1
  1652. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/async-dispose.js +1 -1
  1653. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/async-iterator.js +3 -1
  1654. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/dispose.js +1 -1
  1655. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/for.js +3 -1
  1656. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/has-instance.js +3 -1
  1657. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/index.js +4 -2
  1658. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/is-concat-spreadable.js +3 -1
  1659. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/iterator.js +3 -1
  1660. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/key-for.js +3 -1
  1661. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/match-all.js +3 -1
  1662. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/match.js +3 -1
  1663. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/observable.js +1 -1
  1664. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/pattern-match.js +1 -1
  1665. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/replace-all.js +2 -1
  1666. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/replace.js +3 -1
  1667. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/search.js +3 -1
  1668. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/species.js +3 -1
  1669. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/split.js +3 -1
  1670. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/to-primitive.js +3 -1
  1671. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/to-string-tag.js +3 -1
  1672. data/lib/condenser/processors/node_modules/core-js-pure/features/symbol/unscopables.js +3 -1
  1673. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/float32-array.js +3 -1
  1674. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/float64-array.js +3 -1
  1675. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/index.js +3 -1
  1676. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/int16-array.js +3 -1
  1677. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/int32-array.js +3 -1
  1678. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/int8-array.js +3 -1
  1679. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/uint16-array.js +3 -1
  1680. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/uint32-array.js +3 -1
  1681. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/uint8-array.js +3 -1
  1682. data/lib/condenser/processors/node_modules/core-js-pure/features/typed-array/uint8-clamped-array.js +3 -1
  1683. data/lib/condenser/processors/node_modules/core-js-pure/features/url-search-params/index.js +3 -1
  1684. data/lib/condenser/processors/node_modules/core-js-pure/features/url/index.js +3 -1
  1685. data/lib/condenser/processors/node_modules/core-js-pure/features/url/to-json.js +3 -1
  1686. data/lib/condenser/processors/node_modules/core-js-pure/features/weak-map/index.js +4 -2
  1687. data/lib/condenser/processors/node_modules/core-js-pure/features/weak-map/upsert.js +5 -0
  1688. data/lib/condenser/processors/node_modules/core-js-pure/features/weak-set/index.js +3 -2
  1689. data/lib/condenser/processors/node_modules/core-js-pure/index.js +2 -1
  1690. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-buffer-native.js +1 -0
  1691. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-for-each.js +6 -2
  1692. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-from.js +9 -9
  1693. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-iteration.js +1 -1
  1694. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-last-index-of.js +6 -3
  1695. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-method-has-species-support.js +5 -1
  1696. data/lib/condenser/processors/node_modules/core-js-pure/internals/{sloppy-array-method.js → array-method-is-strict.js} +1 -1
  1697. data/lib/condenser/processors/node_modules/core-js-pure/internals/array-method-uses-to-length.js +30 -0
  1698. data/lib/condenser/processors/node_modules/core-js-pure/internals/async-iterator-create-proxy.js +61 -0
  1699. data/lib/condenser/processors/node_modules/core-js-pure/internals/async-iterator-iteration.js +61 -0
  1700. data/lib/condenser/processors/node_modules/core-js-pure/internals/async-iterator-prototype.js +37 -0
  1701. data/lib/condenser/processors/node_modules/core-js-pure/internals/classof.js +2 -1
  1702. data/lib/condenser/processors/node_modules/core-js-pure/internals/collection-from.js +1 -1
  1703. data/lib/condenser/processors/node_modules/core-js-pure/internals/collection-strong.js +1 -1
  1704. data/lib/condenser/processors/node_modules/core-js-pure/internals/collection.js +14 -9
  1705. data/lib/condenser/processors/node_modules/core-js-pure/internals/{hide.js → create-non-enumerable-property.js} +0 -0
  1706. data/lib/condenser/processors/node_modules/core-js-pure/internals/define-iterator.js +3 -3
  1707. data/lib/condenser/processors/node_modules/core-js-pure/internals/define-well-known-symbol.js +1 -1
  1708. data/lib/condenser/processors/node_modules/core-js-pure/internals/descriptors.js +1 -1
  1709. data/lib/condenser/processors/node_modules/core-js-pure/internals/engine-is-ios.js +3 -0
  1710. data/lib/condenser/processors/node_modules/core-js-pure/internals/{user-agent.js → engine-user-agent.js} +0 -0
  1711. data/lib/condenser/processors/node_modules/core-js-pure/internals/engine-v8-version.js +20 -0
  1712. data/lib/condenser/processors/node_modules/core-js-pure/internals/entry-unbind.js +3 -1
  1713. data/lib/condenser/processors/node_modules/core-js-pure/internals/export.js +9 -5
  1714. data/lib/condenser/processors/node_modules/core-js-pure/internals/flatten-into-array.js +1 -1
  1715. data/lib/condenser/processors/node_modules/core-js-pure/internals/{bind-context.js → function-bind-context.js} +0 -0
  1716. data/lib/condenser/processors/node_modules/core-js-pure/internals/get-async-iterator-method.js +9 -0
  1717. data/lib/condenser/processors/node_modules/core-js-pure/internals/global.js +4 -5
  1718. data/lib/condenser/processors/node_modules/core-js-pure/internals/ieee754.js +88 -0
  1719. data/lib/condenser/processors/node_modules/core-js-pure/internals/inspect-source.js +12 -0
  1720. data/lib/condenser/processors/node_modules/core-js-pure/internals/internal-state.js +2 -2
  1721. data/lib/condenser/processors/node_modules/core-js-pure/internals/iterate.js +5 -4
  1722. data/lib/condenser/processors/node_modules/core-js-pure/internals/iterator-create-proxy.js +51 -0
  1723. data/lib/condenser/processors/node_modules/core-js-pure/internals/iterators-core.js +4 -2
  1724. data/lib/condenser/processors/node_modules/core-js-pure/internals/map-upsert.js +23 -0
  1725. data/lib/condenser/processors/node_modules/core-js-pure/internals/microtask.js +3 -3
  1726. data/lib/condenser/processors/node_modules/core-js-pure/internals/native-url.js +13 -4
  1727. data/lib/condenser/processors/node_modules/core-js-pure/internals/native-weak-map.js +2 -2
  1728. data/lib/condenser/processors/node_modules/core-js-pure/internals/{parse-float.js → number-parse-float.js} +4 -4
  1729. data/lib/condenser/processors/node_modules/core-js-pure/internals/{parse-int.js → number-parse-int.js} +4 -4
  1730. data/lib/condenser/processors/node_modules/core-js-pure/internals/object-assign.js +12 -1
  1731. data/lib/condenser/processors/node_modules/core-js-pure/internals/object-create.js +48 -19
  1732. data/lib/condenser/processors/node_modules/core-js-pure/internals/object-iterator.js +37 -0
  1733. data/lib/condenser/processors/node_modules/core-js-pure/internals/{forced-object-prototype-accessors-methods.js → object-prototype-accessors-forced.js} +0 -0
  1734. data/lib/condenser/processors/node_modules/core-js-pure/internals/object-to-string.js +3 -8
  1735. data/lib/condenser/processors/node_modules/core-js-pure/internals/redefine.js +2 -2
  1736. data/lib/condenser/processors/node_modules/core-js-pure/internals/regexp-sticky-helpers.js +1 -0
  1737. data/lib/condenser/processors/node_modules/core-js-pure/internals/set-global.js +2 -2
  1738. data/lib/condenser/processors/node_modules/core-js-pure/internals/set-to-string-tag.js +5 -3
  1739. data/lib/condenser/processors/node_modules/core-js-pure/internals/shared-store.js +7 -0
  1740. data/lib/condenser/processors/node_modules/core-js-pure/internals/shared.js +3 -7
  1741. data/lib/condenser/processors/node_modules/core-js-pure/internals/{forced-string-html-method.js → string-html-forced.js} +0 -0
  1742. data/lib/condenser/processors/node_modules/core-js-pure/internals/{webkit-string-pad-bug.js → string-pad-webkit-bug.js} +1 -1
  1743. data/lib/condenser/processors/node_modules/core-js-pure/internals/{punycode-to-ascii.js → string-punycode-to-ascii.js} +0 -0
  1744. data/lib/condenser/processors/node_modules/core-js-pure/internals/{forced-string-trim-method.js → string-trim-forced.js} +0 -0
  1745. data/lib/condenser/processors/node_modules/core-js-pure/internals/task.js +4 -2
  1746. data/lib/condenser/processors/node_modules/core-js-pure/internals/to-absolute-index.js +1 -1
  1747. data/lib/condenser/processors/node_modules/core-js-pure/internals/to-positive-integer.js +7 -0
  1748. data/lib/condenser/processors/node_modules/core-js-pure/internals/to-string-tag-support.js +8 -0
  1749. data/lib/condenser/processors/node_modules/core-js-pure/internals/{typed-arrays-constructors-requires-wrappers.js → typed-array-constructors-require-wrappers.js} +1 -1
  1750. data/lib/condenser/processors/node_modules/core-js-pure/internals/use-symbol-as-uid.js +7 -0
  1751. data/lib/condenser/processors/node_modules/core-js-pure/internals/well-known-symbol-wrapped.js +3 -0
  1752. data/lib/condenser/processors/node_modules/core-js-pure/internals/well-known-symbol.js +8 -3
  1753. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.concat.js +5 -1
  1754. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.every.js +6 -2
  1755. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.filter.js +6 -1
  1756. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.find-index.js +4 -1
  1757. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.find.js +4 -1
  1758. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.includes.js +4 -1
  1759. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.index-of.js +5 -3
  1760. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.join.js +3 -3
  1761. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.map.js +6 -1
  1762. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.reduce-right.js +6 -2
  1763. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.reduce.js +6 -2
  1764. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.reverse.js +1 -0
  1765. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.slice.js +6 -2
  1766. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.some.js +6 -2
  1767. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.sort.js +5 -5
  1768. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.array.splice.js +5 -1
  1769. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.global-this.js +8 -0
  1770. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.json.stringify.js +32 -0
  1771. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.map.js +3 -3
  1772. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.number.parse-float.js +1 -1
  1773. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.number.parse-int.js +1 -1
  1774. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.object.define-getter.js +1 -1
  1775. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.object.define-setter.js +1 -1
  1776. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.object.lookup-getter.js +1 -1
  1777. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.object.lookup-setter.js +1 -1
  1778. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.parse-float.js +1 -1
  1779. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.parse-int.js +1 -1
  1780. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.promise.finally.js +7 -1
  1781. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.promise.js +29 -21
  1782. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.reflect.set.js +10 -1
  1783. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.regexp.sticky.js +1 -0
  1784. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.regexp.test.js +1 -0
  1785. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.set.js +2 -2
  1786. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.anchor.js +1 -1
  1787. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.big.js +1 -1
  1788. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.blink.js +1 -1
  1789. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.bold.js +1 -1
  1790. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.ends-with.js +10 -1
  1791. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.fixed.js +1 -1
  1792. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.fontcolor.js +1 -1
  1793. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.fontsize.js +1 -1
  1794. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.italics.js +1 -1
  1795. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.link.js +1 -1
  1796. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.match-all.js +23 -8
  1797. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.pad-end.js +1 -1
  1798. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.pad-start.js +1 -1
  1799. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.small.js +1 -1
  1800. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.starts-with.js +10 -1
  1801. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.strike.js +1 -1
  1802. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.sub.js +1 -1
  1803. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.sup.js +1 -1
  1804. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.trim-end.js +1 -1
  1805. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.trim-start.js +1 -1
  1806. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.string.trim.js +1 -1
  1807. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.symbol.js +46 -34
  1808. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.weak-map.js +3 -3
  1809. data/lib/condenser/processors/node_modules/core-js-pure/modules/es.weak-set.js +3 -3
  1810. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.aggregate-error.js +19 -3
  1811. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.as-indexed-pairs.js +27 -0
  1812. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.constructor.js +29 -0
  1813. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.drop.js +41 -0
  1814. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.every.js +10 -0
  1815. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.filter.js +42 -0
  1816. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.find.js +10 -0
  1817. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.flat-map.js +67 -0
  1818. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.for-each.js +10 -0
  1819. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.from.js +30 -0
  1820. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.map.js +30 -0
  1821. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.reduce.js +46 -0
  1822. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.some.js +10 -0
  1823. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.take.js +22 -0
  1824. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.async-iterator.to-array.js +10 -0
  1825. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.global-this.js +2 -8
  1826. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.as-indexed-pairs.js +20 -0
  1827. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.constructor.js +48 -0
  1828. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.drop.js +30 -0
  1829. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.every.js +16 -0
  1830. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.filter.js +30 -0
  1831. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.find.js +16 -0
  1832. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.flat-map.js +46 -0
  1833. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.for-each.js +11 -0
  1834. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.from.js +32 -0
  1835. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.map.js +23 -0
  1836. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.reduce.js +25 -0
  1837. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.some.js +16 -0
  1838. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.take.js +25 -0
  1839. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.iterator.to-array.js +15 -0
  1840. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.every.js +1 -1
  1841. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.filter.js +1 -1
  1842. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.find-key.js +1 -1
  1843. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.find.js +1 -1
  1844. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.map-keys.js +1 -1
  1845. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.map-values.js +1 -1
  1846. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.reduce.js +9 -8
  1847. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.some.js +1 -1
  1848. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js +5 -12
  1849. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.map.upsert.js +10 -0
  1850. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.iaddh.js +1 -0
  1851. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.imulh.js +1 -0
  1852. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.isubh.js +1 -0
  1853. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.signbit.js +1 -2
  1854. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.umulh.js +1 -0
  1855. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.number.from-string.js +1 -1
  1856. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.object.iterate-entries.js +11 -0
  1857. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.object.iterate-keys.js +11 -0
  1858. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.object.iterate-values.js +11 -0
  1859. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.observable.js +2 -2
  1860. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.every.js +1 -1
  1861. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.filter.js +1 -1
  1862. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.find.js +1 -1
  1863. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.map.js +1 -1
  1864. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.reduce.js +9 -8
  1865. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.set.some.js +1 -1
  1866. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.string.match-all.js +0 -1
  1867. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.string.replace-all.js +17 -20
  1868. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js +1 -2
  1869. data/lib/condenser/processors/node_modules/core-js-pure/modules/esnext.weak-map.upsert.js +10 -0
  1870. data/lib/condenser/processors/node_modules/core-js-pure/modules/web.dom-collections.iterator.js +4 -3
  1871. data/lib/condenser/processors/node_modules/core-js-pure/modules/web.immediate.js +2 -1
  1872. data/lib/condenser/processors/node_modules/core-js-pure/modules/web.timers.js +1 -1
  1873. data/lib/condenser/processors/node_modules/core-js-pure/modules/web.url-search-params.js +42 -6
  1874. data/lib/condenser/processors/node_modules/core-js-pure/modules/web.url.js +1 -2
  1875. data/lib/condenser/processors/node_modules/core-js-pure/package.json +12 -6
  1876. data/lib/condenser/processors/node_modules/core-js-pure/postinstall.js +56 -0
  1877. data/lib/condenser/processors/node_modules/core-js-pure/proposals/global-this.js +2 -1
  1878. data/lib/condenser/processors/node_modules/core-js-pure/proposals/iterator-helpers.js +28 -0
  1879. data/lib/condenser/processors/node_modules/core-js-pure/proposals/map-update-or-insert.js +2 -1
  1880. data/lib/condenser/processors/node_modules/core-js-pure/proposals/map-upsert.js +5 -0
  1881. data/lib/condenser/processors/node_modules/core-js-pure/proposals/object-iteration.js +3 -0
  1882. data/lib/condenser/processors/node_modules/core-js-pure/stable/array-buffer/constructor.js +3 -1
  1883. data/lib/condenser/processors/node_modules/core-js-pure/stable/array-buffer/index.js +3 -1
  1884. data/lib/condenser/processors/node_modules/core-js-pure/stable/array-buffer/is-view.js +3 -1
  1885. data/lib/condenser/processors/node_modules/core-js-pure/stable/array-buffer/slice.js +3 -1
  1886. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/concat.js +3 -1
  1887. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/copy-within.js +3 -1
  1888. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/entries.js +3 -1
  1889. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/every.js +3 -1
  1890. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/fill.js +3 -1
  1891. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/filter.js +3 -1
  1892. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/find-index.js +3 -1
  1893. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/find.js +3 -1
  1894. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/flat-map.js +3 -1
  1895. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/flat.js +3 -1
  1896. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/for-each.js +3 -1
  1897. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/from.js +3 -1
  1898. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/includes.js +3 -1
  1899. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/index-of.js +3 -1
  1900. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/index.js +3 -1
  1901. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/is-array.js +3 -1
  1902. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/iterator.js +3 -1
  1903. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/join.js +3 -1
  1904. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/keys.js +3 -1
  1905. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/last-index-of.js +3 -1
  1906. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/map.js +3 -1
  1907. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/of.js +3 -1
  1908. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/reduce-right.js +3 -1
  1909. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/reduce.js +3 -1
  1910. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/reverse.js +3 -1
  1911. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/slice.js +3 -1
  1912. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/some.js +3 -1
  1913. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/sort.js +3 -1
  1914. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/splice.js +3 -1
  1915. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/values.js +3 -1
  1916. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/concat.js +3 -1
  1917. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/copy-within.js +3 -1
  1918. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/entries.js +3 -1
  1919. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/every.js +3 -1
  1920. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/fill.js +3 -1
  1921. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/filter.js +3 -1
  1922. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/find-index.js +3 -1
  1923. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/find.js +3 -1
  1924. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/flat-map.js +3 -1
  1925. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/flat.js +3 -1
  1926. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/for-each.js +3 -1
  1927. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/includes.js +3 -1
  1928. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/index-of.js +3 -1
  1929. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/index.js +3 -1
  1930. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/iterator.js +3 -1
  1931. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/join.js +3 -1
  1932. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/keys.js +3 -1
  1933. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/last-index-of.js +3 -1
  1934. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/map.js +3 -1
  1935. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/reduce-right.js +3 -1
  1936. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/reduce.js +3 -1
  1937. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/reverse.js +3 -1
  1938. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/slice.js +3 -1
  1939. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/some.js +3 -1
  1940. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/sort.js +3 -1
  1941. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/splice.js +3 -1
  1942. data/lib/condenser/processors/node_modules/core-js-pure/stable/array/virtual/values.js +3 -1
  1943. data/lib/condenser/processors/node_modules/core-js-pure/stable/clear-immediate.js +2 -1
  1944. data/lib/condenser/processors/node_modules/core-js-pure/stable/data-view/index.js +3 -1
  1945. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/index.js +3 -1
  1946. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/now.js +3 -1
  1947. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/to-iso-string.js +3 -1
  1948. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/to-json.js +3 -1
  1949. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/to-primitive.js +3 -1
  1950. data/lib/condenser/processors/node_modules/core-js-pure/stable/date/to-string.js +3 -1
  1951. data/lib/condenser/processors/node_modules/core-js-pure/stable/dom-collections/for-each.js +3 -1
  1952. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/bind.js +3 -1
  1953. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/has-instance.js +3 -1
  1954. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/index.js +3 -1
  1955. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/name.js +3 -1
  1956. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/virtual/bind.js +3 -1
  1957. data/lib/condenser/processors/node_modules/core-js-pure/stable/function/virtual/index.js +3 -1
  1958. data/lib/condenser/processors/node_modules/core-js-pure/stable/global-this.js +2 -2
  1959. data/lib/condenser/processors/node_modules/core-js-pure/stable/index.js +2 -1
  1960. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/bind.js +3 -1
  1961. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/code-point-at.js +3 -1
  1962. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/concat.js +3 -1
  1963. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/copy-within.js +3 -1
  1964. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/ends-with.js +3 -1
  1965. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/every.js +3 -1
  1966. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/fill.js +3 -1
  1967. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/filter.js +3 -1
  1968. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/find-index.js +3 -1
  1969. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/find.js +3 -1
  1970. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/flags.js +3 -1
  1971. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/flat-map.js +3 -1
  1972. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/flat.js +3 -1
  1973. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/includes.js +3 -1
  1974. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/index-of.js +3 -1
  1975. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/last-index-of.js +3 -1
  1976. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/map.js +3 -1
  1977. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/match-all.js +3 -1
  1978. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/pad-end.js +3 -1
  1979. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/pad-start.js +3 -1
  1980. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/reduce-right.js +3 -1
  1981. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/reduce.js +3 -1
  1982. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/repeat.js +3 -1
  1983. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/reverse.js +3 -1
  1984. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/slice.js +3 -1
  1985. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/some.js +3 -1
  1986. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/sort.js +3 -1
  1987. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/splice.js +3 -1
  1988. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/starts-with.js +3 -1
  1989. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/trim-end.js +3 -1
  1990. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/trim-left.js +3 -1
  1991. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/trim-right.js +3 -1
  1992. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/trim-start.js +3 -1
  1993. data/lib/condenser/processors/node_modules/core-js-pure/stable/instance/trim.js +3 -1
  1994. data/lib/condenser/processors/node_modules/core-js-pure/stable/json/index.js +3 -1
  1995. data/lib/condenser/processors/node_modules/core-js-pure/stable/json/stringify.js +3 -1
  1996. data/lib/condenser/processors/node_modules/core-js-pure/stable/json/to-string-tag.js +3 -1
  1997. data/lib/condenser/processors/node_modules/core-js-pure/stable/map/index.js +3 -1
  1998. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/acosh.js +3 -1
  1999. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/asinh.js +3 -1
  2000. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/atanh.js +3 -1
  2001. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/cbrt.js +3 -1
  2002. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/clz32.js +3 -1
  2003. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/cosh.js +3 -1
  2004. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/expm1.js +3 -1
  2005. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/fround.js +3 -1
  2006. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/hypot.js +3 -1
  2007. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/imul.js +3 -1
  2008. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/index.js +3 -1
  2009. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/log10.js +3 -1
  2010. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/log1p.js +3 -1
  2011. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/log2.js +3 -1
  2012. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/sign.js +3 -1
  2013. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/sinh.js +3 -1
  2014. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/tanh.js +3 -1
  2015. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/to-string-tag.js +3 -1
  2016. data/lib/condenser/processors/node_modules/core-js-pure/stable/math/trunc.js +3 -1
  2017. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/constructor.js +3 -1
  2018. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/epsilon.js +3 -1
  2019. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/index.js +3 -1
  2020. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/is-finite.js +3 -1
  2021. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/is-integer.js +3 -1
  2022. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/is-nan.js +3 -1
  2023. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/is-safe-integer.js +3 -1
  2024. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/max-safe-integer.js +3 -1
  2025. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/min-safe-integer.js +3 -1
  2026. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/parse-float.js +3 -1
  2027. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/parse-int.js +3 -1
  2028. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/to-fixed.js +3 -1
  2029. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/to-precision.js +3 -1
  2030. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/virtual/index.js +3 -1
  2031. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/virtual/to-fixed.js +3 -1
  2032. data/lib/condenser/processors/node_modules/core-js-pure/stable/number/virtual/to-precision.js +3 -1
  2033. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/assign.js +3 -1
  2034. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/create.js +3 -1
  2035. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/define-getter.js +3 -1
  2036. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/define-properties.js +3 -1
  2037. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/define-property.js +3 -1
  2038. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/define-setter.js +3 -1
  2039. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/entries.js +3 -1
  2040. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/freeze.js +3 -1
  2041. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/from-entries.js +3 -1
  2042. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/get-own-property-descriptor.js +3 -1
  2043. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/get-own-property-descriptors.js +3 -1
  2044. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/get-own-property-names.js +3 -1
  2045. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/get-own-property-symbols.js +3 -1
  2046. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/get-prototype-of.js +3 -1
  2047. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/index.js +3 -1
  2048. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/is-extensible.js +3 -1
  2049. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/is-frozen.js +3 -1
  2050. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/is-sealed.js +3 -1
  2051. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/is.js +3 -1
  2052. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/keys.js +3 -1
  2053. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/lookup-getter.js +3 -1
  2054. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/lookup-setter.js +3 -1
  2055. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/prevent-extensions.js +3 -1
  2056. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/seal.js +3 -1
  2057. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/set-prototype-of.js +3 -1
  2058. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/to-string.js +3 -1
  2059. data/lib/condenser/processors/node_modules/core-js-pure/stable/object/values.js +3 -1
  2060. data/lib/condenser/processors/node_modules/core-js-pure/stable/parse-float.js +3 -1
  2061. data/lib/condenser/processors/node_modules/core-js-pure/stable/parse-int.js +3 -1
  2062. data/lib/condenser/processors/node_modules/core-js-pure/stable/promise/all-settled.js +3 -1
  2063. data/lib/condenser/processors/node_modules/core-js-pure/stable/promise/finally.js +3 -1
  2064. data/lib/condenser/processors/node_modules/core-js-pure/stable/promise/index.js +3 -1
  2065. data/lib/condenser/processors/node_modules/core-js-pure/stable/queue-microtask.js +3 -1
  2066. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/apply.js +3 -1
  2067. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/construct.js +3 -1
  2068. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/define-property.js +3 -1
  2069. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/delete-property.js +3 -1
  2070. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/get-own-property-descriptor.js +3 -1
  2071. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/get-prototype-of.js +3 -1
  2072. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/get.js +3 -1
  2073. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/has.js +3 -1
  2074. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/index.js +3 -1
  2075. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/is-extensible.js +3 -1
  2076. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/own-keys.js +3 -1
  2077. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/prevent-extensions.js +3 -1
  2078. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/set-prototype-of.js +3 -1
  2079. data/lib/condenser/processors/node_modules/core-js-pure/stable/reflect/set.js +3 -1
  2080. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/constructor.js +3 -1
  2081. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/flags.js +3 -1
  2082. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/index.js +3 -1
  2083. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/match.js +3 -1
  2084. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/replace.js +3 -1
  2085. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/search.js +3 -1
  2086. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/split.js +3 -1
  2087. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/sticky.js +3 -0
  2088. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/test.js +3 -0
  2089. data/lib/condenser/processors/node_modules/core-js-pure/stable/regexp/to-string.js +3 -1
  2090. data/lib/condenser/processors/node_modules/core-js-pure/stable/set-immediate.js +2 -1
  2091. data/lib/condenser/processors/node_modules/core-js-pure/stable/set-interval.js +2 -1
  2092. data/lib/condenser/processors/node_modules/core-js-pure/stable/set-timeout.js +2 -1
  2093. data/lib/condenser/processors/node_modules/core-js-pure/stable/set/index.js +3 -1
  2094. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/anchor.js +3 -1
  2095. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/big.js +3 -1
  2096. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/blink.js +3 -1
  2097. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/bold.js +3 -1
  2098. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/code-point-at.js +3 -1
  2099. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/ends-with.js +3 -1
  2100. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/fixed.js +3 -1
  2101. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/fontcolor.js +3 -1
  2102. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/fontsize.js +3 -1
  2103. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/from-code-point.js +3 -1
  2104. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/includes.js +3 -1
  2105. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/index.js +3 -1
  2106. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/italics.js +3 -1
  2107. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/iterator.js +3 -1
  2108. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/link.js +3 -1
  2109. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/match-all.js +3 -1
  2110. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/match.js +3 -1
  2111. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/pad-end.js +3 -1
  2112. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/pad-start.js +3 -1
  2113. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/raw.js +3 -1
  2114. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/repeat.js +3 -1
  2115. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/replace.js +3 -1
  2116. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/search.js +3 -1
  2117. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/small.js +3 -1
  2118. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/split.js +3 -1
  2119. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/starts-with.js +3 -1
  2120. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/strike.js +3 -1
  2121. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/sub.js +3 -1
  2122. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/sup.js +3 -1
  2123. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/trim-end.js +3 -1
  2124. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/trim-left.js +3 -1
  2125. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/trim-right.js +3 -1
  2126. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/trim-start.js +3 -1
  2127. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/trim.js +3 -1
  2128. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/anchor.js +3 -1
  2129. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/big.js +3 -1
  2130. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/blink.js +3 -1
  2131. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/bold.js +3 -1
  2132. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/code-point-at.js +3 -1
  2133. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/ends-with.js +3 -1
  2134. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/fixed.js +3 -1
  2135. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/fontcolor.js +3 -1
  2136. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/fontsize.js +3 -1
  2137. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/includes.js +3 -1
  2138. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/index.js +3 -1
  2139. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/italics.js +3 -1
  2140. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/iterator.js +3 -1
  2141. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/link.js +3 -1
  2142. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/match-all.js +3 -1
  2143. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/pad-end.js +3 -1
  2144. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/pad-start.js +3 -1
  2145. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/repeat.js +3 -1
  2146. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/small.js +3 -1
  2147. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/starts-with.js +3 -1
  2148. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/strike.js +3 -1
  2149. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/sub.js +3 -1
  2150. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/sup.js +3 -1
  2151. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/trim-end.js +3 -1
  2152. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/trim-left.js +3 -1
  2153. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/trim-right.js +3 -1
  2154. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/trim-start.js +3 -1
  2155. data/lib/condenser/processors/node_modules/core-js-pure/stable/string/virtual/trim.js +3 -1
  2156. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/async-iterator.js +3 -1
  2157. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/for.js +3 -1
  2158. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/has-instance.js +3 -1
  2159. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/index.js +3 -1
  2160. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/is-concat-spreadable.js +3 -1
  2161. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/iterator.js +3 -1
  2162. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/key-for.js +3 -1
  2163. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/match-all.js +3 -1
  2164. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/match.js +3 -1
  2165. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/replace.js +3 -1
  2166. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/search.js +3 -1
  2167. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/species.js +3 -1
  2168. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/split.js +3 -1
  2169. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/to-primitive.js +3 -1
  2170. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/to-string-tag.js +3 -1
  2171. data/lib/condenser/processors/node_modules/core-js-pure/stable/symbol/unscopables.js +3 -1
  2172. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/float32-array.js +3 -1
  2173. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/float64-array.js +3 -1
  2174. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/index.js +3 -1
  2175. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/int16-array.js +3 -1
  2176. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/int32-array.js +3 -1
  2177. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/int8-array.js +3 -1
  2178. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/uint16-array.js +3 -1
  2179. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/uint32-array.js +3 -1
  2180. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/uint8-array.js +3 -1
  2181. data/lib/condenser/processors/node_modules/core-js-pure/stable/typed-array/uint8-clamped-array.js +3 -1
  2182. data/lib/condenser/processors/node_modules/core-js-pure/stable/url-search-params/index.js +3 -1
  2183. data/lib/condenser/processors/node_modules/core-js-pure/stable/url/index.js +3 -1
  2184. data/lib/condenser/processors/node_modules/core-js-pure/stable/weak-map/index.js +3 -1
  2185. data/lib/condenser/processors/node_modules/core-js-pure/stable/weak-set/index.js +3 -1
  2186. data/lib/condenser/processors/node_modules/core-js-pure/stage/0.js +2 -1
  2187. data/lib/condenser/processors/node_modules/core-js-pure/stage/1.js +3 -2
  2188. data/lib/condenser/processors/node_modules/core-js-pure/stage/2.js +4 -3
  2189. data/lib/condenser/processors/node_modules/core-js-pure/stage/3.js +4 -2
  2190. data/lib/condenser/processors/node_modules/core-js-pure/stage/4.js +3 -1
  2191. data/lib/condenser/processors/node_modules/core-js-pure/stage/index.js +3 -1
  2192. data/lib/condenser/processors/node_modules/core-js-pure/stage/pre.js +2 -1
  2193. data/lib/condenser/processors/node_modules/core-js-pure/web/dom-collections.js +2 -1
  2194. data/lib/condenser/processors/node_modules/core-js-pure/web/immediate.js +2 -1
  2195. data/lib/condenser/processors/node_modules/core-js-pure/web/index.js +2 -1
  2196. data/lib/condenser/processors/node_modules/core-js-pure/web/timers.js +2 -1
  2197. data/lib/condenser/processors/node_modules/electron-to-chromium/README.md +11 -1
  2198. data/lib/condenser/processors/node_modules/electron-to-chromium/chromium-versions.js +3 -1
  2199. data/lib/condenser/processors/node_modules/electron-to-chromium/full-chromium-versions.js +142 -0
  2200. data/lib/condenser/processors/node_modules/electron-to-chromium/full-versions.js +102 -0
  2201. data/lib/condenser/processors/node_modules/electron-to-chromium/package.json +11 -11
  2202. data/lib/condenser/processors/node_modules/electron-to-chromium/versions.js +3 -0
  2203. data/lib/condenser/processors/node_modules/has-symbols/.eslintrc +2 -1
  2204. data/lib/condenser/processors/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  2205. data/lib/condenser/processors/node_modules/has-symbols/.github/workflows/rebase.yml +15 -0
  2206. data/lib/condenser/processors/node_modules/has-symbols/.travis.yml +9 -110
  2207. data/lib/condenser/processors/node_modules/has-symbols/CHANGELOG.md +34 -3
  2208. data/lib/condenser/processors/node_modules/has-symbols/package.json +26 -15
  2209. data/lib/condenser/processors/node_modules/has-symbols/shams.js +1 -1
  2210. data/lib/condenser/processors/node_modules/is-reference/CHANGELOG.md +4 -0
  2211. data/lib/condenser/processors/node_modules/is-reference/dist/is-reference.es.js +4 -2
  2212. data/lib/condenser/processors/node_modules/is-reference/dist/is-reference.js +4 -2
  2213. data/lib/condenser/processors/node_modules/is-reference/node_modules/@types/estree/LICENSE +21 -0
  2214. data/lib/condenser/processors/node_modules/is-reference/node_modules/@types/estree/README.md +16 -0
  2215. data/lib/condenser/processors/node_modules/is-reference/node_modules/@types/estree/index.d.ts +548 -0
  2216. data/lib/condenser/processors/node_modules/is-reference/node_modules/@types/estree/package.json +51 -0
  2217. data/lib/condenser/processors/node_modules/is-reference/package.json +5 -5
  2218. data/lib/condenser/processors/node_modules/json5/CHANGELOG.md +14 -0
  2219. data/lib/condenser/processors/node_modules/json5/README.md +1 -1
  2220. data/lib/condenser/processors/node_modules/json5/dist/index.js +30 -8
  2221. data/lib/condenser/processors/node_modules/json5/dist/index.min.js +1 -1
  2222. data/lib/condenser/processors/node_modules/json5/dist/index.min.mjs +1 -1
  2223. data/lib/condenser/processors/node_modules/json5/dist/index.mjs +8 -1
  2224. data/lib/condenser/processors/node_modules/json5/lib/stringify.js +8 -1
  2225. data/lib/condenser/processors/node_modules/json5/package.json +18 -17
  2226. data/lib/condenser/processors/node_modules/magic-string/CHANGELOG.md +8 -0
  2227. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.cjs.js +27 -8
  2228. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.cjs.js.map +1 -1
  2229. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.es.js +26 -8
  2230. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.es.js.map +1 -1
  2231. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.umd.js +27 -8
  2232. data/lib/condenser/processors/node_modules/magic-string/dist/magic-string.umd.js.map +1 -1
  2233. data/lib/condenser/processors/node_modules/magic-string/index.d.ts +6 -1
  2234. data/lib/condenser/processors/node_modules/magic-string/package.json +5 -5
  2235. data/lib/condenser/processors/node_modules/node-releases/.idea/workspace.xml +58 -92
  2236. data/lib/condenser/processors/node_modules/node-releases/data/processed/envs.json +368 -135
  2237. data/lib/condenser/processors/node_modules/node-releases/data/raw/nodejs.json +19 -0
  2238. data/lib/condenser/processors/node_modules/node-releases/data/release-schedule/release-schedule.json +8 -8
  2239. data/lib/condenser/processors/node_modules/node-releases/node_modules/.bin/semver +1 -0
  2240. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/CHANGELOG.md +70 -0
  2241. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/LICENSE +15 -0
  2242. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/README.md +443 -0
  2243. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/bin/semver.js +174 -0
  2244. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/package.json +60 -0
  2245. data/lib/condenser/processors/node_modules/node-releases/node_modules/semver/range.bnf +16 -0
  2246. data/lib/condenser/processors/node_modules/{core-js-compat → node-releases}/node_modules/semver/semver.js +0 -0
  2247. data/lib/condenser/processors/node_modules/node-releases/package.json +11 -11
  2248. data/lib/condenser/processors/node_modules/regexpu-core/package.json +13 -15
  2249. data/lib/condenser/processors/node_modules/regexpu-core/rewrite-pattern.js +14 -14
  2250. data/lib/condenser/processors/node_modules/regjsgen/LICENSE +1 -1
  2251. data/lib/condenser/processors/node_modules/regjsgen/README.md +12 -5
  2252. data/lib/condenser/processors/node_modules/regjsgen/package.json +9 -9
  2253. data/lib/condenser/processors/node_modules/regjsgen/regjsgen.js +3 -3
  2254. data/lib/condenser/processors/node_modules/regjsparser/package.json +5 -5
  2255. data/lib/condenser/processors/node_modules/regjsparser/parser.js +20 -3
  2256. data/lib/condenser/processors/node_modules/resolve/.travis.yml +5 -305
  2257. data/lib/condenser/processors/node_modules/resolve/index.js +2 -3
  2258. data/lib/condenser/processors/node_modules/resolve/lib/async.js +52 -45
  2259. data/lib/condenser/processors/node_modules/resolve/lib/core.json +1 -0
  2260. data/lib/condenser/processors/node_modules/resolve/lib/is-core.js +5 -0
  2261. data/lib/condenser/processors/node_modules/resolve/lib/sync.js +10 -10
  2262. data/lib/condenser/processors/node_modules/resolve/package.json +13 -9
  2263. data/lib/condenser/processors/node_modules/resolve/readme.markdown +3 -2
  2264. data/lib/condenser/processors/node_modules/resolve/test/core.js +3 -0
  2265. data/lib/condenser/processors/node_modules/resolve/test/filter.js +1 -1
  2266. data/lib/condenser/processors/node_modules/resolve/test/filter_sync.js +12 -5
  2267. data/lib/condenser/processors/node_modules/resolve/test/resolver.js +2 -2
  2268. data/lib/condenser/processors/node_modules/resolve/test/resolver_sync.js +2 -2
  2269. data/lib/condenser/processors/node_modules/resolve/test/symlinks.js +90 -1
  2270. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/CHANGELOG.md +5 -0
  2271. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/README.md +6 -4
  2272. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +6 -2
  2273. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js.map +1 -1
  2274. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +7 -3
  2275. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js.map +1 -1
  2276. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/package.json +6 -6
  2277. data/lib/condenser/processors/node_modules/rollup-plugin-commonjs/src/index.js +8 -2
  2278. data/lib/condenser/processors/node_modules/rollup-pluginutils/CHANGELOG.md +4 -0
  2279. data/lib/condenser/processors/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +1 -1
  2280. data/lib/condenser/processors/node_modules/rollup-pluginutils/dist/pluginutils.es.js +1 -1
  2281. data/lib/condenser/processors/node_modules/rollup-pluginutils/package.json +7 -7
  2282. data/lib/condenser/processors/node_modules/rollup-pluginutils/src/attachScopes.ts +1 -1
  2283. data/lib/condenser/processors/node_modules/rollup/CHANGELOG.md +406 -0
  2284. data/lib/condenser/processors/node_modules/rollup/LICENSE.md +27 -29
  2285. data/lib/condenser/processors/node_modules/rollup/README.md +5 -5
  2286. data/lib/condenser/processors/node_modules/rollup/dist/bin/rollup +240 -209
  2287. data/lib/condenser/processors/node_modules/rollup/dist/rollup.browser.es.js +17 -3
  2288. data/lib/condenser/processors/node_modules/rollup/dist/rollup.browser.js +17 -3
  2289. data/lib/condenser/processors/node_modules/rollup/dist/rollup.d.ts +58 -28
  2290. data/lib/condenser/processors/node_modules/rollup/dist/rollup.es.js +6317 -9944
  2291. data/lib/condenser/processors/node_modules/rollup/dist/rollup.js +6811 -10485
  2292. data/lib/condenser/processors/node_modules/rollup/dist/shared/index.js +61 -12
  2293. data/lib/condenser/processors/node_modules/rollup/package.json +43 -40
  2294. data/lib/condenser/processors/node_modules/semver/package.json +1 -2
  2295. data/lib/condenser/processors/node_modules/sourcemap-codec/CHANGELOG.md +4 -0
  2296. data/lib/condenser/processors/node_modules/sourcemap-codec/dist/sourcemap-codec.es.js.map +1 -0
  2297. data/lib/condenser/processors/node_modules/sourcemap-codec/dist/sourcemap-codec.umd.js.map +1 -0
  2298. data/lib/condenser/processors/node_modules/sourcemap-codec/package.json +6 -5
  2299. data/lib/condenser/processors/node_processor.rb +3 -0
  2300. data/lib/condenser/processors/package-lock.json +472 -456
  2301. data/lib/condenser/templating_engine/erb.rb +4 -2
  2302. data/lib/condenser/transformers/ejs.rb +6 -4
  2303. data/lib/condenser/transformers/sass_transformer.rb +4 -2
  2304. data/lib/condenser/version.rb +1 -1
  2305. data/test/minifiers/uglify_minifier_test.rb +2 -2
  2306. data/test/preprocessor/babel_test.rb +29 -15
  2307. data/test/templates/ejs_test.rb +21 -0
  2308. data/test/test_helper.rb +1 -2
  2309. metadata +386 -142
  2310. data/lib/condenser/processors/node_modules/.bin/regexp-tree +0 -1
  2311. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/src/index.js +0 -32
  2312. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/options.json +0 -10
  2313. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/script-extensions/input.js +0 -1
  2314. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/script-extensions/output.js +0 -1
  2315. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/simple/input.js +0 -1
  2316. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/simple/output.js +0 -1
  2317. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-10/input.js +0 -1
  2318. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-10/output.js +0 -1
  2319. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-11/input.js +0 -1
  2320. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-11/output.js +0 -1
  2321. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-12/input.js +0 -1
  2322. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/with-unicode-flag/unicode-12/output.js +0 -1
  2323. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/options.json +0 -10
  2324. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/script-extensions/input.js +0 -1
  2325. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/script-extensions/output.js +0 -1
  2326. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/simple/input.js +0 -1
  2327. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/simple/output.js +0 -1
  2328. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-10/input.js +0 -1
  2329. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-10/output.js +0 -1
  2330. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-11/input.js +0 -1
  2331. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-11/output.js +0 -1
  2332. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-12/input.js +0 -1
  2333. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/fixtures/without-unicode-flag/unicode-12/output.js +0 -1
  2334. data/lib/condenser/processors/node_modules/@babel/plugin-proposal-unicode-property-regex/test/index.js +0 -2
  2335. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/src/index.js +0 -25
  2336. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/fixtures/dotall-regex/options.json +0 -3
  2337. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/fixtures/dotall-regex/simple/input.js +0 -2
  2338. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/fixtures/dotall-regex/simple/output.js +0 -2
  2339. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/fixtures/dotall-regex/with-unicode-flag/input.js +0 -2
  2340. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/fixtures/dotall-regex/with-unicode-flag/output.js +0 -2
  2341. data/lib/condenser/processors/node_modules/@babel/plugin-transform-dotall-regex/test/index.js +0 -2
  2342. data/lib/condenser/processors/node_modules/@babel/preset-env/CHANGELOG.md +0 -668
  2343. data/lib/condenser/processors/node_modules/@babel/preset-env/yarn-error.log +0 -57
  2344. data/lib/condenser/processors/node_modules/core-js-pure/internals/function-to-string.js +0 -3
  2345. data/lib/condenser/processors/node_modules/core-js-pure/internals/wrapped-well-known-symbol.js +0 -1
  2346. data/lib/condenser/processors/node_modules/core-js-pure/scripts/postinstall.js +0 -24
  2347. data/lib/condenser/processors/node_modules/has-symbols/.npmignore +0 -37
  2348. data/lib/condenser/processors/node_modules/regexp-tree/LICENSE +0 -21
  2349. data/lib/condenser/processors/node_modules/regexp-tree/README.md +0 -2085
  2350. data/lib/condenser/processors/node_modules/regexp-tree/bin/regexp-tree +0 -5
  2351. data/lib/condenser/processors/node_modules/regexp-tree/dist/bin/regexp-tree.js +0 -16
  2352. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/index.js +0 -50
  2353. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js +0 -123
  2354. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js +0 -69
  2355. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js +0 -59
  2356. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js +0 -23
  2357. data/lib/condenser/processors/node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js +0 -17
  2358. data/lib/condenser/processors/node_modules/regexp-tree/dist/generator/index.js +0 -177
  2359. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js +0 -412
  2360. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js +0 -380
  2361. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js +0 -59
  2362. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js +0 -227
  2363. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js +0 -94
  2364. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js +0 -220
  2365. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js +0 -234
  2366. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js +0 -22
  2367. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js +0 -81
  2368. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/table-printer.js +0 -27
  2369. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/transforms/char-plus-to-star-transform.js +0 -35
  2370. data/lib/condenser/processors/node_modules/regexp-tree/dist/interpreter/finite-automaton/transforms/index.js +0 -10
  2371. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/index.js +0 -83
  2372. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js +0 -110
  2373. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js +0 -339
  2374. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js +0 -30
  2375. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js +0 -33
  2376. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js +0 -211
  2377. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js +0 -71
  2378. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js +0 -84
  2379. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js +0 -143
  2380. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js +0 -27
  2381. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js +0 -195
  2382. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js +0 -44
  2383. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js +0 -92
  2384. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/index.js +0 -56
  2385. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js +0 -74
  2386. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js +0 -113
  2387. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js +0 -34
  2388. data/lib/condenser/processors/node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js +0 -55
  2389. data/lib/condenser/processors/node_modules/regexp-tree/dist/parser/generated/regexp-tree.js +0 -1405
  2390. data/lib/condenser/processors/node_modules/regexp-tree/dist/parser/index.js +0 -28
  2391. data/lib/condenser/processors/node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js +0 -379
  2392. data/lib/condenser/processors/node_modules/regexp-tree/dist/regexp-tree.js +0 -178
  2393. data/lib/condenser/processors/node_modules/regexp-tree/dist/transform/index.js +0 -138
  2394. data/lib/condenser/processors/node_modules/regexp-tree/dist/transform/utils.js +0 -88
  2395. data/lib/condenser/processors/node_modules/regexp-tree/dist/traverse/index.js +0 -313
  2396. data/lib/condenser/processors/node_modules/regexp-tree/dist/traverse/node-path.js +0 -426
  2397. data/lib/condenser/processors/node_modules/regexp-tree/dist/utils/clone.js +0 -29
  2398. data/lib/condenser/processors/node_modules/regexp-tree/index.d.ts +0 -294
  2399. data/lib/condenser/processors/node_modules/regexp-tree/index.js +0 -8
  2400. data/lib/condenser/processors/node_modules/regexp-tree/package.json +0 -70
  2401. data/lib/condenser/processors/node_modules/resolve/.editorconfig +0 -20
  2402. data/lib/condenser/processors/node_modules/trim-right/index.js +0 -10
  2403. data/lib/condenser/processors/node_modules/trim-right/license +0 -21
  2404. data/lib/condenser/processors/node_modules/trim-right/package.json +0 -69
  2405. data/lib/condenser/processors/node_modules/trim-right/readme.md +0 -30
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/tokenizer/types.js","../src/util/scopeflags.js","../src/plugins/estree.js","../src/util/whitespace.js","../src/tokenizer/context.js","../src/util/identifier.js","../src/plugins/flow.js","../src/plugins/jsx/xhtml.js","../src/plugins/jsx/index.js","../src/util/scope.js","../src/plugins/typescript/scope.js","../src/plugins/typescript/index.js","../src/plugins/placeholders.js","../src/plugins/v8intrinsic.js","../src/plugin-utils.js","../src/options.js","../src/util/location.js","../src/parser/base.js","../src/parser/comments.js","../src/parser/location.js","../src/tokenizer/state.js","../src/tokenizer/index.js","../src/parser/util.js","../src/parser/node.js","../src/parser/lval.js","../src/parser/expression.js","../src/parser/statement.js","../src/parser/index.js","../src/index.js"],"sourcesContent":["// @flow\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string,\n beforeExpr?: boolean,\n startsExpr?: boolean,\n rightAssociative?: boolean,\n isLoop?: boolean,\n isAssign?: boolean,\n prefix?: boolean,\n postfix?: boolean,\n binop?: ?number,\n};\n\nexport class TokenType {\n label: string;\n keyword: ?string;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: ?number;\n updateContext: ?(prevType: TokenType) => void;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n this.updateContext = null;\n }\n}\n\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = new TokenType(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return new TokenType(name, { beforeExpr, binop });\n}\n\nexport const types: { [name: string]: TokenType } = {\n num: new TokenType(\"num\", { startsExpr }),\n bigint: new TokenType(\"bigint\", { startsExpr }),\n regexp: new TokenType(\"regexp\", { startsExpr }),\n string: new TokenType(\"string\", { startsExpr }),\n name: new TokenType(\"name\", { startsExpr }),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", { beforeExpr, startsExpr }),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", { beforeExpr, startsExpr }),\n braceBarL: new TokenType(\"{|\", { beforeExpr, startsExpr }),\n braceR: new TokenType(\"}\"),\n braceBarR: new TokenType(\"|}\"),\n parenL: new TokenType(\"(\", { beforeExpr, startsExpr }),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", { beforeExpr }),\n semi: new TokenType(\";\", { beforeExpr }),\n colon: new TokenType(\":\", { beforeExpr }),\n doubleColon: new TokenType(\"::\", { beforeExpr }),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", { beforeExpr }),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", { beforeExpr }),\n template: new TokenType(\"template\"),\n ellipsis: new TokenType(\"...\", { beforeExpr }),\n backQuote: new TokenType(\"`\", { startsExpr }),\n dollarBraceL: new TokenType(\"${\", { beforeExpr, startsExpr }),\n at: new TokenType(\"@\"),\n hash: new TokenType(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: new TokenType(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", { beforeExpr, isAssign }),\n assign: new TokenType(\"_=\", { beforeExpr, isAssign }),\n incDec: new TokenType(\"++/--\", { prefix, postfix, startsExpr }),\n bang: new TokenType(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: new TokenType(\"~\", { beforeExpr, prefix, startsExpr }),\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 2),\n logicalAND: createBinop(\"&&\", 3),\n bitwiseOR: createBinop(\"|\", 4),\n bitwiseXOR: createBinop(\"^\", 5),\n bitwiseAND: createBinop(\"&\", 6),\n equality: createBinop(\"==/!=/===/!==\", 7),\n relational: createBinop(\"</>/<=/>=\", 8),\n bitShift: createBinop(\"<</>>/>>>\", 9),\n plusMin: new TokenType(\"+/-\", { beforeExpr, binop: 10, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: new TokenType(\"%\", { beforeExpr, binop: 11, startsExpr }),\n star: createBinop(\"*\", 11),\n slash: createBinop(\"/\", 11),\n exponent: new TokenType(\"**\", {\n beforeExpr,\n binop: 12,\n rightAssociative: true,\n }),\n\n // Keywords\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _for: createKeyword(\"for\", { isLoop }),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _while: createKeyword(\"while\", { isLoop }),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _in: createKeyword(\"in\", { beforeExpr, binop: 8 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 8 }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n};\n","// @flow\n\n// Each scope gets a bitset that may contain these flags\n// prettier-ignore\nexport const SCOPE_OTHER = 0b0000000000,\n SCOPE_PROGRAM = 0b0000000001,\n SCOPE_FUNCTION = 0b0000000010,\n SCOPE_ASYNC = 0b0000000100,\n SCOPE_GENERATOR = 0b0000001000,\n SCOPE_ARROW = 0b0000010000,\n SCOPE_SIMPLE_CATCH = 0b0000100000,\n SCOPE_SUPER = 0b0001000000,\n SCOPE_DIRECT_SUPER = 0b0010000000,\n SCOPE_CLASS = 0b0100000000,\n SCOPE_TS_MODULE = 0b1000000000,\n SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;\n\nexport type ScopeFlags =\n | typeof SCOPE_OTHER\n | typeof SCOPE_PROGRAM\n | typeof SCOPE_FUNCTION\n | typeof SCOPE_VAR\n | typeof SCOPE_ASYNC\n | typeof SCOPE_GENERATOR\n | typeof SCOPE_ARROW\n | typeof SCOPE_SIMPLE_CATCH\n | typeof SCOPE_SUPER\n | typeof SCOPE_DIRECT_SUPER\n | typeof SCOPE_CLASS;\n\nexport function functionFlags(isAsync: boolean, isGenerator: boolean) {\n return (\n SCOPE_FUNCTION |\n (isAsync ? SCOPE_ASYNC : 0) |\n (isGenerator ? SCOPE_GENERATOR : 0)\n );\n}\n\n// These flags are meant to be _only_ used inside the Scope class (or subclasses).\n// prettier-ignore\nexport const BIND_KIND_VALUE = 0b00000_0000_01,\n BIND_KIND_TYPE = 0b00000_0000_10,\n // Used in checkLVal and declareName to determine the type of a binding\n BIND_SCOPE_VAR = 0b00000_0001_00, // Var-style binding\n BIND_SCOPE_LEXICAL = 0b00000_0010_00, // Let- or const-style binding\n BIND_SCOPE_FUNCTION = 0b00000_0100_00, // Function declaration\n BIND_SCOPE_OUTSIDE = 0b00000_1000_00, // Special case for function names as\n // bound inside the function\n // Misc flags\n BIND_FLAGS_NONE = 0b00001_0000_00,\n BIND_FLAGS_CLASS = 0b00010_0000_00,\n BIND_FLAGS_TS_ENUM = 0b00100_0000_00,\n BIND_FLAGS_TS_CONST_ENUM = 0b01000_0000_00,\n BIND_FLAGS_TS_EXPORT_ONLY = 0b10000_0000_00;\n\n// These flags are meant to be _only_ used by Scope consumers\n// prettier-ignore\n/* = is value? | is type? | scope | misc flags */\nexport const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS ,\n BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0 ,\n BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0 ,\n BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0 ,\n BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS ,\n BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0 ,\n BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,\n BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,\n // These bindings don't introduce anything in the scope. They are used for assignments and\n // function expressions IDs.\n BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE ,\n BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE ,\n\n BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,\n BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY;\n\nexport type BindingTypes =\n | typeof BIND_NONE\n | typeof BIND_OUTSIDE\n | typeof BIND_VAR\n | typeof BIND_LEXICAL\n | typeof BIND_CLASS\n | typeof BIND_FUNCTION\n | typeof BIND_TS_INTERFACE\n | typeof BIND_TS_TYPE\n | typeof BIND_TS_ENUM\n | typeof BIND_TS_AMBIENT\n | typeof BIND_TS_NAMESPACE;\n","// @flow\n\n/* global BigInt */\n\nimport { types as tt, TokenType } from \"../tokenizer/types\";\nimport type Parser from \"../parser\";\nimport * as N from \"../types\";\nimport type { Pos, Position } from \"../util/location\";\nimport { type BindingTypes, BIND_NONE } from \"../util/scopeflags\";\n\nfunction isSimpleProperty(node: N.Node): boolean {\n return (\n node != null &&\n node.type === \"Property\" &&\n node.kind === \"init\" &&\n node.method === false\n );\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n estreeParseRegExpLiteral({ pattern, flags }: N.RegExpLiteral): N.Node {\n let regex = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n estreeParseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n // $FlowIgnore\n const bigInt = typeof BigInt !== \"undefined\" ? BigInt(value) : null;\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral(value: any): N.Node {\n return this.parseLiteral(value, \"Literal\");\n }\n\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const directiveLiteral = directive.value;\n\n const stmt = this.startNodeAt(directive.start, directive.loc.start);\n const expression = this.startNodeAt(\n directiveLiteral.start,\n directiveLiteral.loc.start,\n );\n\n expression.value = directiveLiteral.value;\n expression.raw = directiveLiteral.extra.raw;\n\n stmt.expression = this.finishNodeAt(\n expression,\n \"Literal\",\n directiveLiteral.end,\n directiveLiteral.loc.end,\n );\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n\n return this.finishNodeAt(\n stmt,\n \"ExpressionStatement\",\n directive.end,\n directive.loc.end,\n );\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(\n node: N.BodilessFunctionOrMethodBase,\n isAsync: ?boolean,\n ): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (isSimpleProperty(node)) {\n this.checkDeclaration(((node: any): N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n const prop = ((method: any): N.EstreeProperty | N.EstreeMethodDefinition);\n const paramCount = prop.kind === \"get\" ? 0 : 1;\n const start = prop.start;\n if (prop.value.params.length !== paramCount) {\n if (prop.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n } else if (\n prop.kind === \"set\" &&\n prop.value.params[0].type === \"RestElement\"\n ) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n disallowLetBinding?: boolean,\n ): void {\n switch (expr.type) {\n case \"ObjectPattern\":\n expr.properties.forEach(prop => {\n this.checkLVal(\n prop.type === \"Property\" ? prop.value : prop,\n bindingType,\n checkClashes,\n \"object destructuring pattern\",\n disallowLetBinding,\n );\n });\n break;\n default:\n super.checkLVal(\n expr,\n bindingType,\n checkClashes,\n contextDescription,\n disallowLetBinding,\n );\n }\n }\n\n checkDuplicatedProto(\n prop: N.ObjectMember | N.SpreadElement,\n protoRef: { used: boolean, start?: number },\n ): void {\n if (\n prop.type === \"SpreadElement\" ||\n prop.computed ||\n prop.method ||\n // $FlowIgnore\n prop.shorthand\n ) {\n return;\n }\n\n const key = prop.key;\n // It is either an Identifier or a String/NumericLiteral\n const name = key.type === \"Identifier\" ? key.name : String(key.value);\n\n if (name === \"__proto__\" && prop.kind === \"init\") {\n // Store the first redefinition's position\n if (protoRef.used && !protoRef.start) {\n protoRef.start = key.start;\n }\n\n protoRef.used = true;\n }\n }\n\n isStrictBody(node: { body: N.BlockStatement }): boolean {\n const isBlockStatement = node.body.type === \"BlockStatement\";\n\n if (isBlockStatement && node.body.body.length > 0) {\n for (const directive of node.body.body) {\n if (\n directive.type === \"ExpressionStatement\" &&\n directive.expression.type === \"Literal\"\n ) {\n if (directive.expression.value === \"use strict\") return true;\n } else {\n // Break for the first non literal expression\n break;\n }\n }\n }\n\n return false;\n }\n\n isValidDirective(stmt: N.Statement): boolean {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n (!stmt.expression.extra || !stmt.expression.extra.parenthesized)\n );\n }\n\n stmtToDirective(stmt: N.Statement): N.Directive {\n const directive = super.stmtToDirective(stmt);\n const value = stmt.expression.value;\n\n // Reset value to the actual value as in estree mode we want\n // the stmt to have the real value and not the raw value\n directive.value.value = value;\n\n return directive;\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: ?boolean,\n topLevel: boolean,\n end: TokenType,\n ): void {\n super.parseBlockBody(node, allowDirectives, topLevel, end);\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n );\n if (method.typeParameters) {\n // $FlowIgnore\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n classBody.body.push(method);\n }\n\n parseExprAtom(refShorthandDefaultPos?: ?Pos): N.Expression {\n switch (this.state.type) {\n case tt.num:\n case tt.string:\n return this.estreeParseLiteral(this.state.value);\n\n case tt.regexp:\n return this.estreeParseRegExpLiteral(this.state.value);\n\n case tt.bigint:\n return this.estreeParseBigIntLiteral(this.state.value);\n\n case tt._null:\n return this.estreeParseLiteral(null);\n\n case tt._true:\n return this.estreeParseLiteral(true);\n\n case tt._false:\n return this.estreeParseLiteral(false);\n\n default:\n return super.parseExprAtom(refShorthandDefaultPos);\n }\n }\n\n parseLiteral<T: N.Literal>(\n value: any,\n type: /*T[\"kind\"]*/ string,\n startPos?: number,\n startLoc?: Position,\n ): T {\n const node = super.parseLiteral(value, type, startPos, startLoc);\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression: ?boolean,\n isMethod?: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n parseMethod<T: N.MethodLike>(\n node: T,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: string,\n inClassScope: boolean = false,\n ): T {\n let funcNode = this.startNode();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n funcNode.type = \"FunctionExpression\";\n delete funcNode.kind;\n // $FlowIgnore\n node.value = funcNode;\n\n type = type === \"ClassMethod\" ? \"MethodDefinition\" : type;\n return this.finishNode(node, type);\n }\n\n parseObjectMethod(\n prop: N.ObjectMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n containsEsc: boolean,\n ): ?N.ObjectMethod {\n const node: N.EstreeProperty = (super.parseObjectMethod(\n prop,\n isGenerator,\n isAsync,\n isPattern,\n containsEsc,\n ): any);\n\n if (node) {\n node.type = \"Property\";\n if (((node: any): N.ClassMethod).kind === \"method\") node.kind = \"init\";\n node.shorthand = false;\n }\n\n return (node: any);\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startPos: ?number,\n startLoc: ?Position,\n isPattern: boolean,\n refShorthandDefaultPos: ?Pos,\n ): ?N.ObjectProperty {\n const node: N.EstreeProperty = (super.parseObjectProperty(\n prop,\n startPos,\n startLoc,\n isPattern,\n refShorthandDefaultPos,\n ): any);\n\n if (node) {\n node.kind = \"init\";\n node.type = \"Property\";\n }\n\n return (node: any);\n }\n\n toAssignable(\n node: N.Node,\n isBinding: ?boolean,\n contextDescription: string,\n ): N.Node {\n if (isSimpleProperty(node)) {\n this.toAssignable(node.value, isBinding, contextDescription);\n\n return node;\n }\n\n return super.toAssignable(node, isBinding, contextDescription);\n }\n\n toAssignableObjectExpressionProp(\n prop: N.Node,\n isBinding: ?boolean,\n isLast: boolean,\n ) {\n if (prop.kind === \"get\" || prop.kind === \"set\") {\n throw this.raise(\n prop.key.start,\n \"Object pattern can't contain getter or setter\",\n );\n } else if (prop.method) {\n throw this.raise(\n prop.key.start,\n \"Object pattern can't contain methods\",\n );\n } else {\n super.toAssignableObjectExpressionProp(prop, isBinding, isLast);\n }\n }\n\n finishCallExpression<T: N.CallExpression | N.OptionalCallExpression>(\n node: T,\n optional: boolean,\n ): N.Expression {\n super.finishCallExpression(node, optional);\n\n if (node.callee.type === \"Import\") {\n ((node: N.Node): N.EstreeImportExpression).type = \"ImportExpression\";\n ((node: N.Node): N.EstreeImportExpression).source = node.arguments[0];\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n\n toReferencedListDeep(\n exprList: $ReadOnlyArray<?N.Expression>,\n isParenthesizedExpr?: boolean,\n ): void {\n // ImportExpressions do not have an arguments array.\n if (!exprList) {\n return;\n }\n\n super.toReferencedListDeep(exprList, isParenthesizedExpr);\n }\n };\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n?|[\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","// @flow\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport { types as tt } from \"./types\";\nimport { lineBreak } from \"../util/whitespace\";\n\nexport class TokContext {\n constructor(\n token: string,\n isExpr?: boolean,\n preserveSpace?: boolean,\n override?: ?Function, // Takes a Tokenizer as a this-parameter, and returns void.\n ) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n }\n\n token: string;\n isExpr: boolean;\n preserveSpace: boolean;\n override: ?Function;\n}\n\nexport const types: {\n [key: string]: TokContext,\n} = {\n braceStatement: new TokContext(\"{\", false),\n braceExpression: new TokContext(\"{\", true),\n templateQuasi: new TokContext(\"${\", false),\n parenStatement: new TokContext(\"(\", false),\n parenExpression: new TokContext(\"(\", true),\n template: new TokContext(\"`\", true, true, p => p.readTmplToken()),\n functionExpression: new TokContext(\"function\", true),\n functionStatement: new TokContext(\"function\", false),\n};\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.state.context.length === 1) {\n this.state.exprAllowed = true;\n return;\n }\n\n let out = this.state.context.pop();\n if (out === types.braceStatement && this.curContext().token === \"function\") {\n out = this.state.context.pop();\n }\n\n this.state.exprAllowed = !out.isExpr;\n};\n\ntt.name.updateContext = function(prevType) {\n let allowed = false;\n if (prevType !== tt.dot) {\n if (\n (this.state.value === \"of\" && !this.state.exprAllowed) ||\n (this.state.value === \"yield\" && this.scope.inGenerator)\n ) {\n allowed = true;\n }\n }\n this.state.exprAllowed = allowed;\n\n if (this.state.isIterator) {\n this.state.isIterator = false;\n }\n};\n\ntt.braceL.updateContext = function(prevType) {\n this.state.context.push(\n this.braceIsBlock(prevType) ? types.braceStatement : types.braceExpression,\n );\n this.state.exprAllowed = true;\n};\n\ntt.dollarBraceL.updateContext = function() {\n this.state.context.push(types.templateQuasi);\n this.state.exprAllowed = true;\n};\n\ntt.parenL.updateContext = function(prevType) {\n const statementParens =\n prevType === tt._if ||\n prevType === tt._for ||\n prevType === tt._with ||\n prevType === tt._while;\n this.state.context.push(\n statementParens ? types.parenStatement : types.parenExpression,\n );\n this.state.exprAllowed = true;\n};\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (\n prevType.beforeExpr &&\n prevType !== tt.semi &&\n prevType !== tt._else &&\n !(\n prevType === tt._return &&\n lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))\n ) &&\n !(\n (prevType === tt.colon || prevType === tt.braceL) &&\n this.curContext() === types.b_stat\n )\n ) {\n this.state.context.push(types.functionExpression);\n } else {\n this.state.context.push(types.functionStatement);\n }\n\n this.state.exprAllowed = false;\n};\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.template) {\n this.state.context.pop();\n } else {\n this.state.context.push(types.template);\n }\n this.state.exprAllowed = false;\n};\n","/* eslint max-len: 0 */\n\n// @flow\n\nimport * as charCodes from \"charcodes\";\nimport { keywords } from \"../tokenizer/types\";\n\nconst reservedWords = {\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\n\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport const isReservedWord = (word: string, inModule: boolean): boolean => {\n return (inModule && word === \"await\") || word === \"enum\";\n};\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 0x80.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c88\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fef\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7bf\\ua7c2-\\ua7c6\\ua7f7-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab67\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1df9\\u1dfb-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,754,9486,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,232,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,792487,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: $ReadOnlyArray<number>): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(current: number, next: number): boolean {\n return current === charCodes.atSign && next === charCodes.atSign;\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n","// @flow\n\n/*:: declare var invariant; */\n\nimport type Parser from \"../parser\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport * as N from \"../types\";\nimport type { Options } from \"../options\";\nimport type { Pos, Position } from \"../util/location\";\nimport type State from \"../tokenizer/state\";\nimport { types as tc } from \"../tokenizer/context\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../util/identifier\";\nimport {\n functionFlags,\n type BindingTypes,\n BIND_NONE,\n BIND_LEXICAL,\n BIND_VAR,\n BIND_FUNCTION,\n SCOPE_ARROW,\n SCOPE_OTHER,\n} from \"../util/scopeflags\";\n\nconst reservedTypes = new Set([\n \"_\",\n \"any\",\n \"bool\",\n \"boolean\",\n \"empty\",\n \"extends\",\n \"false\",\n \"interface\",\n \"mixed\",\n \"null\",\n \"number\",\n \"static\",\n \"string\",\n \"true\",\n \"typeof\",\n \"void\",\n]);\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n return (\n bodyElement.type === \"DeclareExportAllDeclaration\" ||\n (bodyElement.type === \"DeclareExportDeclaration\" &&\n (!bodyElement.declaration ||\n (bodyElement.declaration.type !== \"TypeAlias\" &&\n bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n );\n}\n\nfunction hasTypeImportKind(node: N.Node): boolean {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nfunction isMaybeDefaultImport(state: State): boolean {\n return (\n (state.type === tt.name || !!state.type.keyword) && state.value !== \"from\"\n );\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n list: T[],\n test: (T, number, T[]) => ?boolean,\n): [T[], T[]] {\n const list1 = [];\n const list2 = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\ntype EnumContext = {|\n enumName: string,\n explicitType: EnumExplicitType,\n memberName: string,\n|};\ntype EnumMemberInit =\n | {| type: \"number\", pos: number, value: N.Node |}\n | {| type: \"string\", pos: number, value: N.Node |}\n | {| type: \"boolean\", pos: number, value: N.Node |}\n | {| type: \"invalid\", pos: number |}\n | {| type: \"none\", pos: number |};\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n // The value of the @flow/@noflow pragma. Initially undefined, transitions\n // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n // past the initial comment.\n flowPragma: void | null | \"flow\" | \"noflow\";\n\n constructor(options: ?Options, input: string) {\n super(options, input);\n this.flowPragma = undefined;\n }\n\n shouldParseTypes(): boolean {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n shouldParseEnums(): boolean {\n return !!this.getPluginOption(\"flow\", \"enums\");\n }\n\n finishToken(type: TokenType, val: any): void {\n if (\n type !== tt.string &&\n type !== tt.semi &&\n type !== tt.interpreterDirective\n ) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n return super.finishToken(type, val);\n }\n\n addComment(comment: N.Comment): void {\n if (this.flowPragma === undefined) {\n // Try to parse a flow pragma.\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) {\n // do nothing\n } else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n return super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || tt.colon);\n\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate(): N.FlowType {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n const moduloPos = this.state.start;\n this.expect(tt.modulo);\n const checksLoc = this.state.startLoc;\n this.expectContextual(\"checks\");\n // Force '%' and 'checks' to be adjacent\n if (\n moduloLoc.line !== checksLoc.line ||\n moduloLoc.column !== checksLoc.column - 1\n ) {\n this.raise(\n moduloPos,\n \"Spaces between ´%´ and ´checks´ are not allowed here.\",\n );\n }\n if (this.eat(tt.parenL)) {\n node.value = this.parseExpression();\n this.expect(tt.parenR);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser(): [?N.FlowType, ?N.FlowPredicate] {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tt.colon);\n let type = null;\n let predicate = null;\n if (this.match(tt.modulo)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(tt.modulo)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n\n flowParseDeclareClass(node: N.FlowDeclareClass): N.FlowDeclareClass {\n this.next();\n this.flowParseInterfaceish(node, /*isClass*/ true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(\n node: N.FlowDeclareFunction,\n ): N.FlowDeclareFunction {\n this.next();\n\n const id = (node.id = this.parseIdentifier());\n\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.isRelational(\"<\")) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(tt.parenL);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n this.expect(tt.parenR);\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.returnType,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n typeContainer.typeAnnotation = this.finishNode(\n typeNode,\n \"FunctionTypeAnnotation\",\n );\n\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n this.resetEndLocation(id);\n this.semicolon();\n\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(\n node: N.FlowDeclare,\n insideModule?: boolean,\n ): N.FlowDeclare {\n if (this.match(tt._class)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(tt._function)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(tt._var)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(\"module\")) {\n if (this.match(tt.dot)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(\n this.state.lastTokStart,\n \"`declare module` cannot be used inside another `declare module`\",\n );\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(\"type\")) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(\"opaque\")) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(\"interface\")) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(tt._export)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n } else {\n throw this.unexpected();\n }\n }\n\n flowParseDeclareVariable(\n node: N.FlowDeclareVariable,\n ): N.FlowDeclareVariable {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(\n /*allowPrimitiveOverride*/ true,\n );\n this.scope.declareName(node.id.name, BIND_VAR, node.id.start);\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(node: N.FlowDeclareModule): N.FlowDeclareModule {\n this.scope.enter(SCOPE_OTHER);\n\n if (this.match(tt.string)) {\n node.id = this.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = (node.body = this.startNode());\n const body = (bodyNode.body = []);\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n let bodyNode = this.startNode();\n\n if (this.match(tt._import)) {\n this.next();\n if (!this.isContextual(\"type\") && !this.match(tt._typeof)) {\n this.raise(\n this.state.lastTokStart,\n \"Imports within a `declare module` body must always be `import type` or `import typeof`\",\n );\n }\n this.parseImport(bodyNode);\n } else {\n this.expectContextual(\n \"declare\",\n \"Only declares and type imports are allowed inside declare module\",\n );\n\n bodyNode = this.flowParseDeclare(bodyNode, true);\n }\n\n body.push(bodyNode);\n }\n\n this.scope.exit();\n\n this.expect(tt.braceR);\n\n this.finishNode(bodyNode, \"BlockStatement\");\n\n let kind = null;\n let hasModuleExport = false;\n const errorMessage =\n \"Found both `declare module.exports` and `declare export` in the same module. \" +\n \"Modules can only have 1 since they are either an ES module or they are a CommonJS module\";\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(bodyElement.start, errorMessage);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(\n bodyElement.start,\n \"Duplicate `declare module.exports` statement\",\n );\n }\n if (kind === \"ES\") this.raise(bodyElement.start, errorMessage);\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(\n node: N.FlowDeclareExportDeclaration,\n insideModule: ?boolean,\n ): N.FlowDeclareExportDeclaration {\n this.expect(tt._export);\n\n if (this.eat(tt._default)) {\n if (this.match(tt._function) || this.match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n // declare export default [type];\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (\n this.match(tt._const) ||\n this.isLet() ||\n ((this.isContextual(\"type\") || this.isContextual(\"interface\")) &&\n !insideModule)\n ) {\n const label = this.state.value;\n const suggestion = exportSuggestions[label];\n this.unexpected(\n this.state.start,\n `\\`declare export ${label}\\` is not supported. Use \\`${suggestion}\\` instead`,\n );\n }\n\n if (\n this.match(tt._var) || // declare export var ...\n this.match(tt._function) || // declare export function ...\n this.match(tt._class) || // declare export class ...\n this.isContextual(\"opaque\") // declare export opaque ..\n ) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (\n this.match(tt.star) || // declare export * from ''\n this.match(tt.braceL) || // declare export {} ...\n this.isContextual(\"interface\") || // declare export interface ...\n this.isContextual(\"type\") || // declare export type ...\n this.isContextual(\"opaque\") // declare export opaque type ...\n ) {\n node = this.parseExport(node);\n if (node.type === \"ExportNamedDeclaration\") {\n // flow does not support the ExportNamedDeclaration\n // $FlowIgnore\n node.type = \"ExportDeclaration\";\n // $FlowFixMe\n node.default = false;\n delete node.exportKind;\n }\n\n // $FlowIgnore\n node.type = \"Declare\" + node.type;\n\n return node;\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(\n node: N.FlowDeclareModuleExports,\n ): N.FlowDeclareModuleExports {\n this.next();\n this.expectContextual(\"exports\");\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(\n node: N.FlowDeclareTypeAlias,\n ): N.FlowDeclareTypeAlias {\n this.next();\n this.flowParseTypeAlias(node);\n // Don't do finishNode as we don't want to process comments twice\n node.type = \"DeclareTypeAlias\";\n return node;\n }\n\n flowParseDeclareOpaqueType(\n node: N.FlowDeclareOpaqueType,\n ): N.FlowDeclareOpaqueType {\n this.next();\n this.flowParseOpaqueType(node, true);\n // Don't do finishNode as we don't want to process comments twice\n node.type = \"DeclareOpaqueType\";\n return node;\n }\n\n flowParseDeclareInterface(\n node: N.FlowDeclareInterface,\n ): N.FlowDeclareInterface {\n this.next();\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n // Interfaces\n\n flowParseInterfaceish(\n node: N.FlowDeclare,\n isClass?: boolean = false,\n ): void {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ !isClass,\n /* declaration */ true,\n );\n\n this.scope.declareName(\n node.id.name,\n isClass ? BIND_FUNCTION : BIND_LEXICAL,\n node.id.start,\n );\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n node.implements = [];\n node.mixins = [];\n\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(tt.comma));\n }\n\n if (this.isContextual(\"mixins\")) {\n this.next();\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n if (this.isContextual(\"implements\")) {\n this.next();\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false,\n });\n }\n\n flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n const node = this.startNode();\n\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node: N.FlowInterface): N.FlowInterface {\n this.flowParseInterfaceish(node);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word: string) {\n if (word === \"_\") {\n this.raise(\n this.state.start,\n \"`_` is only allowed as a type argument to call or new\",\n );\n }\n }\n\n checkReservedType(word: string, startLoc: number, declaration?: boolean) {\n if (!reservedTypes.has(word)) return;\n\n if (declaration) {\n this.raise(startLoc, `Cannot overwrite reserved type ${word}`);\n return;\n }\n\n this.raise(startLoc, `Unexpected reserved type ${word}`);\n }\n\n flowParseRestrictedIdentifier(\n liberal?: boolean,\n declaration?: boolean,\n ): N.Identifier {\n this.checkReservedType(this.state.value, this.state.start, declaration);\n return this.parseIdentifier(liberal);\n }\n\n // Type aliases\n\n flowParseTypeAlias(node: N.FlowTypeAlias): N.FlowTypeAlias {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ false,\n /* declaration */ true,\n );\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(tt.eq);\n this.semicolon();\n\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(\n node: N.FlowOpaqueType,\n declare: boolean,\n ): N.FlowOpaqueType {\n this.expectContextual(\"type\");\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n );\n this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n // Parse the supertype\n node.supertype = null;\n if (this.match(tt.colon)) {\n node.supertype = this.flowParseTypeInitialiser(tt.colon);\n }\n\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(tt.eq);\n }\n this.semicolon();\n\n return this.finishNode(node, \"OpaqueType\");\n }\n\n // Type annotations\n\n flowParseTypeParameter(requireDefault?: boolean = false): N.TypeParameter {\n const nodeStart = this.state.start;\n\n const node = this.startNode();\n\n const variance = this.flowParseVariance();\n\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n node.variance = variance;\n node.bound = ident.typeAnnotation;\n\n if (this.match(tt.eq)) {\n this.eat(tt.eq);\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(\n nodeStart,\n // eslint-disable-next-line max-len\n \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n );\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n\n this.state.inType = true;\n\n // istanbul ignore else: this condition is already checked at all call sites\n if (this.isRelational(\"<\") || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n } while (!this.isRelational(\">\"));\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expectRelational(\"<\");\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.isRelational(\">\")) {\n node.params.push(this.flowParseType());\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expectRelational(\"<\");\n while (!this.isRelational(\">\")) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.isRelational(\">\")) {\n this.expect(tt.comma);\n }\n }\n this.expectRelational(\">\");\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType(): N.FlowInterfaceType {\n const node = this.startNode();\n this.expectContextual(\"interface\");\n\n node.extends = [];\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false,\n });\n\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey(): N.Expression {\n return this.match(tt.num) || this.match(tt.string)\n ? this.parseExprAtom()\n : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(\n node: N.FlowObjectTypeIndexer,\n isStatic: boolean,\n variance: ?N.FlowVariance,\n ): N.FlowObjectTypeIndexer {\n node.static = isStatic;\n\n // Note: bracketL has already been consumed\n if (this.lookahead().type === tt.colon) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(tt.bracketR);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(\n node: N.FlowObjectTypeInternalSlot,\n isStatic: boolean,\n ): N.FlowObjectTypeInternalSlot {\n node.static = isStatic;\n // Note: both bracketL have already been consumed\n node.id = this.flowParseObjectPropertyKey();\n this.expect(tt.bracketR);\n this.expect(tt.bracketR);\n if (this.isRelational(\"<\") || this.match(tt.parenL)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.start, node.loc.start),\n );\n } else {\n node.method = false;\n if (this.eat(tt.question)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(\n node: N.FlowFunctionTypeAnnotation,\n ): N.FlowFunctionTypeAnnotation {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(tt.parenL);\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n node.params.push(this.flowParseFunctionTypeParam());\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n\n if (this.eat(tt.ellipsis)) {\n node.rest = this.flowParseFunctionTypeParam();\n }\n this.expect(tt.parenR);\n node.returnType = this.flowParseTypeInitialiser();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(\n node: N.FlowObjectTypeCallProperty,\n isStatic: boolean,\n ): N.FlowObjectTypeCallProperty {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact,\n }: {\n allowStatic: boolean,\n allowExact: boolean,\n allowSpread: boolean,\n allowProto: boolean,\n allowInexact: boolean,\n }): N.FlowObjectTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n const nodeStart = this.startNode();\n\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(tt.braceBarL)) {\n this.expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n exact = true;\n } else {\n this.expect(tt.braceL);\n endDelim = tt.braceR;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStart: ?number = null;\n let inexactStart: ?number = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(\"proto\")) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n protoStart = this.state.start;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(\"static\")) {\n const lookahead = this.lookahead();\n\n // static is a valid identifier name\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(tt.bracketL)) {\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (this.eat(tt.bracketL)) {\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.internalSlots.push(\n this.flowParseObjectTypeInternalSlot(node, isStatic),\n );\n } else {\n nodeStart.indexers.push(\n this.flowParseObjectTypeIndexer(node, isStatic, variance),\n );\n }\n } else if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n nodeStart.callProperties.push(\n this.flowParseObjectTypeCallProperty(node, isStatic),\n );\n } else {\n let kind = \"init\";\n\n if (this.isContextual(\"get\") || this.isContextual(\"set\")) {\n const lookahead = this.lookahead();\n if (\n lookahead.type === tt.name ||\n lookahead.type === tt.string ||\n lookahead.type === tt.num\n ) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(\n node,\n isStatic,\n protoStart,\n variance,\n kind,\n allowSpread,\n allowInexact ?? !exact,\n );\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStart = this.state.lastTokStart;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (\n inexactStart &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.raise(\n inexactStart,\n \"Explicit inexact syntax must appear at the end of an inexact object\",\n );\n }\n }\n\n this.expect(endDelim);\n\n /* The inexact flag should only be added on ObjectTypeAnnotations that\n * are not the body of an interface, declare interface, or declare class.\n * Since spreads are only allowed in objec types, checking that is\n * sufficient here.\n */\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n this.state.inType = oldInType;\n\n return out;\n }\n\n flowParseObjectTypeProperty(\n node: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty,\n isStatic: boolean,\n protoStart: ?number,\n variance: ?N.FlowVariance,\n kind: string,\n allowSpread: boolean,\n allowInexact: boolean,\n ): (N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty) | null {\n if (this.eat(tt.ellipsis)) {\n const isInexactToken =\n this.match(tt.comma) ||\n this.match(tt.semi) ||\n this.match(tt.braceR) ||\n this.match(tt.braceBarR);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(\n this.state.lastTokStart,\n \"Explicit inexact syntax cannot appear in class or interface definitions\",\n );\n } else if (!allowInexact) {\n this.raise(\n this.state.lastTokStart,\n \"Explicit inexact syntax cannot appear inside an explicit exact object type\",\n );\n }\n if (variance) {\n this.raise(\n variance.start,\n \"Explicit inexact syntax cannot have variance\",\n );\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(\n this.state.lastTokStart,\n \"Spread operator cannot appear in class or interface definitions\",\n );\n }\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.raise(variance.start, \"Spread properties cannot have variance\");\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStart != null;\n node.kind = kind;\n\n let optional = false;\n if (this.isRelational(\"<\") || this.match(tt.parenL)) {\n // This is a method property\n node.method = true;\n\n if (protoStart != null) {\n this.unexpected(protoStart);\n }\n if (variance) {\n this.unexpected(variance.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.start, node.loc.start),\n );\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n\n node.method = false;\n\n if (this.eat(tt.question)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n // This is similar to checkGetterSetterParams, but as\n // @babel/parser uses non estree properties we cannot reuse it here\n flowCheckGetterSetterParams(\n property: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty,\n ): void {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const start = property.start;\n const length =\n property.value.params.length + (property.value.rest ? 1 : 0);\n if (length !== paramCount) {\n if (property.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n flowObjectTypeSemicolon(): void {\n if (\n !this.eat(tt.semi) &&\n !this.eat(tt.comma) &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(\n startPos?: number,\n startLoc?: Position,\n id?: N.Identifier,\n ): N.FlowQualifiedTypeIdentifier {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n let node = id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(tt.dot)) {\n const node2 = this.startNodeAt(startPos, startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(\n startPos: number,\n startLoc: Position,\n id: N.Identifier,\n ): N.FlowGenericTypeAnnotation {\n const node = this.startNodeAt(startPos, startLoc);\n\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);\n\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n const node = this.startNode();\n this.expect(tt._typeof);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType(): N.FlowTupleTypeAnnotation {\n const node = this.startNode();\n node.types = [];\n this.expect(tt.bracketL);\n // We allow trailing commas\n while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n node.types.push(this.flowParseType());\n if (this.match(tt.bracketR)) break;\n this.expect(tt.comma);\n }\n this.expect(tt.bracketR);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(): N.FlowFunctionTypeParam {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n if (lh.type === tt.colon || lh.type === tt.question) {\n name = this.parseIdentifier();\n if (this.eat(tt.question)) {\n optional = true;\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(\n type: N.FlowType,\n ): N.FlowFunctionTypeParam {\n const node = this.startNodeAt(type.start, type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(\n params: N.FlowFunctionTypeParam[] = [],\n ): { params: N.FlowFunctionTypeParam[], rest: ?N.FlowFunctionTypeParam } {\n let rest: ?N.FlowFunctionTypeParam = null;\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n params.push(this.flowParseFunctionTypeParam());\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n if (this.eat(tt.ellipsis)) {\n rest = this.flowParseFunctionTypeParam();\n }\n return { params, rest };\n }\n\n flowIdentToTypeAnnotation(\n startPos: number,\n startLoc: Position,\n node: N.FlowTypeAnnotation,\n id: N.Identifier,\n ): N.FlowTypeAnnotation {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startPos, startLoc, id);\n }\n }\n\n // The parsing of types roughly parallels the parsing of expressions, and\n // primary types are kind of like primary expressions...they're the\n // primitives with which other types are constructed.\n flowParsePrimaryType(): N.FlowTypeAnnotation {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case tt.name:\n if (this.isContextual(\"interface\")) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(\n startPos,\n startLoc,\n node,\n this.parseIdentifier(),\n );\n\n case tt.braceL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true,\n });\n\n case tt.braceBarL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false,\n });\n\n case tt.bracketL:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case tt.relational:\n if (this.state.value === \"<\") {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(tt.parenL);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n break;\n\n case tt.parenL:\n this.next();\n\n // Check to see if this is actually a grouped type\n if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n if (this.match(tt.name)) {\n const token = this.lookahead().type;\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n this.state.noAnonFunctionType ||\n !(\n this.match(tt.comma) ||\n (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n )\n ) {\n this.expect(tt.parenR);\n return type;\n } else {\n // Eat a comma if there is one\n this.eat(tt.comma);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([\n this.reinterpretTypeAsFunctionTypeParam(type),\n ]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n node.typeParameters = null;\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n\n case tt.string:\n return this.parseLiteral(\n this.state.value,\n \"StringLiteralTypeAnnotation\",\n );\n\n case tt._true:\n case tt._false:\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(node, \"BooleanLiteralTypeAnnotation\");\n\n case tt.plusMin:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(tt.num)) {\n return this.parseLiteral(\n -this.state.value,\n \"NumberLiteralTypeAnnotation\",\n node.start,\n node.loc.start,\n );\n }\n\n if (this.match(tt.bigint)) {\n return this.parseLiteral(\n -this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n node.start,\n node.loc.start,\n );\n }\n\n throw this.raise(\n this.state.start,\n `Unexpected token, expected \"number\" or \"bigint\"`,\n );\n }\n\n this.unexpected();\n case tt.num:\n return this.parseLiteral(\n this.state.value,\n \"NumberLiteralTypeAnnotation\",\n );\n\n case tt.bigint:\n return this.parseLiteral(\n this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n );\n\n case tt._void:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case tt._null:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case tt._this:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case tt.star:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n default:\n if (this.state.type.keyword === \"typeof\") {\n return this.flowParseTypeofType();\n } else if (this.state.type.keyword) {\n const label = this.state.type.label;\n this.next();\n return super.createIdentifier(node, label);\n }\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType(): N.FlowTypeAnnotation {\n const startPos = this.state.start,\n startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n while (this.match(tt.bracketL) && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.elementType = type;\n this.expect(tt.bracketL);\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n }\n return type;\n }\n\n flowParsePrefixType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n if (this.eat(tt.question)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens(): N.FlowTypeAnnotation {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n const node = this.startNodeAt(param.start, param.loc.start);\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n\n flowParseIntersectionType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n this.eat(tt.bitwiseAND);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(tt.bitwiseAND)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType(): N.FlowTypeAnnotation {\n const node = this.startNode();\n this.eat(tt.bitwiseOR);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(tt.bitwiseOR)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType(): N.FlowTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n // Ensure that a brace after a function generic type annotation is a\n // statement, except in arrow functions (noAnonFunctionType)\n this.state.exprAllowed =\n this.state.exprAllowed || this.state.noAnonFunctionType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation(): N.FlowTypeAnnotation {\n if (this.state.type === tt.name && this.state.value === \"_\") {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startPos, startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation(): N.FlowTypeAnnotation {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(\n allowPrimitiveOverride?: boolean,\n ): N.Identifier {\n const ident = allowPrimitiveOverride\n ? this.parseIdentifier()\n : this.flowParseRestrictedIdentifier();\n if (this.match(tt.colon)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n\n typeCastToParameter(node: N.Node): N.Node {\n node.expression.typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(\n node.expression,\n node.typeAnnotation.end,\n node.typeAnnotation.loc.end,\n );\n\n return node.expression;\n }\n\n flowParseVariance(): ?N.FlowVariance {\n let variance = null;\n if (this.match(tt.plusMin)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseFunctionBody(\n node: N.Function,\n allowExpressionBody: ?boolean,\n isMethod?: boolean = false,\n ): void {\n if (allowExpressionBody) {\n return this.forwardNoArrowParamsConversionAt(node, () =>\n super.parseFunctionBody(node, true, isMethod),\n );\n }\n\n return super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n if (this.match(tt.colon)) {\n const typeNode = this.startNode();\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.typeAnnotation,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n node.returnType = typeNode.typeAnnotation\n ? this.finishNode(typeNode, \"TypeAnnotation\")\n : null;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n // interfaces and enums\n parseStatement(context: ?string, topLevel?: boolean): N.Statement {\n // strict mode handling of `interface` since it's a reserved word\n if (\n this.state.strict &&\n this.match(tt.name) &&\n this.state.value === \"interface\"\n ) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n } else if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n } else {\n const stmt = super.parseStatement(context, topLevel);\n // We will parse a flow pragma in any comment before the first statement.\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n }\n\n // declares, interfaces and type aliases\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.ExpressionStatement {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (\n this.match(tt._class) ||\n this.match(tt.name) ||\n this.match(tt._function) ||\n this.match(tt._var) ||\n this.match(tt._export)\n ) {\n return this.flowParseDeclare(node);\n }\n } else if (this.match(tt.name)) {\n if (expr.name === \"interface\") {\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr);\n }\n\n // export type\n shouldParseExportDeclaration(): boolean {\n return (\n this.isContextual(\"type\") ||\n this.isContextual(\"interface\") ||\n this.isContextual(\"opaque\") ||\n (this.shouldParseEnums() && this.isContextual(\"enum\")) ||\n super.shouldParseExportDeclaration()\n );\n }\n\n isExportDefaultSpecifier(): boolean {\n if (\n this.match(tt.name) &&\n (this.state.value === \"type\" ||\n this.state.value === \"interface\" ||\n this.state.value === \"opaque\" ||\n (this.shouldParseEnums() && this.state.value === \"enum\"))\n ) {\n return false;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n // only use the expensive \"tryParse\" method if there is a question mark\n // and if we come from inside parens\n if (refNeedsArrowPos) {\n const result = this.tryParse(() =>\n super.parseConditional(expr, noIn, startPos, startLoc),\n );\n\n if (!result.node) {\n // $FlowIgnore\n refNeedsArrowPos.start = result.error.pos || this.state.start;\n return expr;\n }\n\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n this.expect(tt.question);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startPos, startLoc);\n let { consequent, failed } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n // if there are two or more possible correct ways of parsing, throw an\n // error.\n // e.g. Source: a ? (b): c => (d): e => f\n // Result 1: a ? b : (c => ((d): e => f))\n // Result 2: a ? ((b): c => d) : (e => f)\n this.raise(\n state.start,\n \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n );\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n this.state.noArrowAt = noArrowAt.concat(valid[0].start);\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(tt.colon);\n\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n this.parseMaybeAssign(noIn, undefined, undefined, undefined),\n );\n\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent(): {\n consequent: N.Expression,\n failed: boolean,\n } {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n\n const consequent = this.parseMaybeAssign();\n const failed = !this.match(tt.colon);\n\n this.state.noArrowParamsConversionAt.pop();\n\n return { consequent, failed };\n }\n\n // Given an expression, walks through out its arrow functions whose body is\n // an expression and through out conditional expressions. It returns every\n // function which has been parsed with a return type but could have been\n // parenthesized expressions.\n // These functions are separated into two arrays: one containing the ones\n // whose parameters can be converted to assignable lists, one containing the\n // others.\n getArrowLikeExpressions(\n node: N.Expression,\n disallowInvalid?: boolean,\n ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n const stack = [node];\n const arrows: N.ArrowFunctionExpression[] = [];\n\n while (stack.length !== 0) {\n const node = stack.pop();\n if (node.type === \"ArrowFunctionExpression\") {\n if (node.typeParameters || !node.returnType) {\n // This is an arrow expression without ambiguity, so check its parameters\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node =>\n node.params.every(param => this.isAssignable(param, true)),\n );\n }\n\n finishArrowValidation(node: N.ArrowFunctionExpression) {\n this.toAssignableList(\n // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n // has not been converted yet.\n ((node.params: any): N.Expression[]),\n true,\n \"arrow function parameters\",\n node.extra?.trailingComma,\n );\n // Enter scope, as checkParams defines bindings\n this.scope.enter(functionFlags(false, false) | SCOPE_ARROW);\n // Use super's method to force the parameters to be checked\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt<T>(node: N.Node, parse: () => T): T {\n let result: T;\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(\n node: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.Expression {\n node = super.parseParenItem(node, startPos, startLoc);\n if (this.eat(tt.question)) {\n node.optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt(startPos, startLoc);\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return node;\n }\n\n assertModuleNodeAllowed(node: N.Node) {\n if (\n (node.type === \"ImportDeclaration\" &&\n (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n (node.type === \"ExportNamedDeclaration\" &&\n node.exportKind === \"type\") ||\n (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n ) {\n // Allow Flowtype imports and exports in all conditions because\n // Flow itself does not care about 'sourceType'.\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExport(node: N.Node): N.AnyExport {\n const decl = super.parseExport(node);\n if (\n decl.type === \"ExportNamedDeclaration\" ||\n decl.type === \"ExportAllDeclaration\"\n ) {\n decl.exportKind = decl.exportKind || \"value\";\n }\n return decl;\n }\n\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n if (this.isContextual(\"type\")) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(tt.braceL)) {\n // export type { foo, bar };\n node.specifiers = this.parseExportSpecifiers();\n this.parseExportFrom(node);\n return null;\n } else {\n // export type Foo = Bar;\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(\"opaque\")) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n // export opaque type Foo = Bar;\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(\"interface\")) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseInterface(declarationNode);\n } else if (this.shouldParseEnums() && this.isContextual(\"enum\")) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(node: N.Node): boolean {\n if (super.eatExportStar(...arguments)) return true;\n\n if (this.isContextual(\"type\") && this.lookahead().type === tt.star) {\n node.exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node: N.Node): boolean {\n const pos = this.state.start;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(pos);\n }\n return hasNamespace;\n }\n\n parseClassId(node: N.Class, isStatement: boolean, optionalId: ?boolean) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n // ensure that inside flow types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n return this.finishOp(tt.braceBarL, 2);\n } else if (\n this.state.inType &&\n (code === charCodes.greaterThan || code === charCodes.lessThan)\n ) {\n return this.finishOp(tt.relational, 1);\n } else if (isIteratorStart(code, next)) {\n this.state.isIterator = true;\n return super.readWord();\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n return true;\n\n case \"ObjectExpression\": {\n const last = node.properties.length - 1;\n return node.properties.every((prop, i) => {\n return (\n prop.type !== \"ObjectMethod\" &&\n (i === last || prop.type === \"SpreadElement\") &&\n this.isAssignable(prop)\n );\n });\n }\n\n case \"ObjectProperty\":\n return this.isAssignable(node.value);\n\n case \"SpreadElement\":\n return this.isAssignable(node.argument);\n\n case \"ArrayExpression\":\n return node.elements.every(element => this.isAssignable(element));\n\n case \"AssignmentExpression\":\n return node.operator === \"=\";\n\n case \"ParenthesizedExpression\":\n case \"TypeCastExpression\":\n return this.isAssignable(node.expression);\n\n case \"MemberExpression\":\n case \"OptionalMemberExpression\":\n return !isBinding;\n\n default:\n return false;\n }\n }\n\n toAssignable(\n node: N.Node,\n isBinding: ?boolean,\n contextDescription: string,\n ): N.Node {\n if (node.type === \"TypeCastExpression\") {\n return super.toAssignable(\n this.typeCastToParameter(node),\n isBinding,\n contextDescription,\n );\n } else {\n return super.toAssignable(node, isBinding, contextDescription);\n }\n }\n\n // turn type casts that we found in function parameter head into type annotated params\n toAssignableList(\n exprList: N.Expression[],\n isBinding: ?boolean,\n contextDescription: string,\n trailingCommaPos?: ?number,\n ): $ReadOnlyArray<N.Pattern> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr && expr.type === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n return super.toAssignableList(\n exprList,\n isBinding,\n contextDescription,\n trailingCommaPos,\n );\n }\n\n // this is a list of nodes, from something like a call expression, we need to filter the\n // type casts that we've found that are illegal in this context\n toReferencedList(\n exprList: $ReadOnlyArray<?N.Expression>,\n isParenthesizedExpr?: boolean,\n ): $ReadOnlyArray<?N.Expression> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr.type === \"TypeCastExpression\" &&\n (!expr.extra || !expr.extra.parenthesized) &&\n (exprList.length > 1 || !isParenthesizedExpr)\n ) {\n this.raise(\n expr.typeAnnotation.start,\n \"The type cast expression is expected to be wrapped with parenthesis\",\n );\n }\n }\n\n return exprList;\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n ): void {\n if (expr.type !== \"TypeCastExpression\") {\n return super.checkLVal(\n expr,\n bindingType,\n checkClashes,\n contextDescription,\n );\n }\n }\n\n // parse class property type annotations\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n\n // determine whether or not we're currently in the position where a class method would appear\n isClassMethod(): boolean {\n return this.isRelational(\"<\") || super.isClassMethod();\n }\n\n // determine whether or not we're currently in the position where a class property would appear\n isClassProperty(): boolean {\n return this.match(tt.colon) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n }\n\n // parse type parameters for class methods\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n if ((method: $FlowFixMe).variance) {\n this.unexpected((method: $FlowFixMe).variance.start);\n }\n delete (method: $FlowFixMe).variance;\n if (this.isRelational(\"<\")) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n if ((method: $FlowFixMe).variance) {\n this.unexpected((method: $FlowFixMe).variance.start);\n }\n delete (method: $FlowFixMe).variance;\n if (this.isRelational(\"<\")) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n // parse a the super class type parameters and implements\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (node.superClass && this.isRelational(\"<\")) {\n node.superTypeParameters = this.flowParseTypeParameterInstantiation();\n }\n if (this.isContextual(\"implements\")) {\n this.next();\n const implemented: N.FlowClassImplements[] = (node.implements = []);\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(tt.comma));\n }\n }\n\n parsePropertyName(\n node: N.ObjectOrClassMember | N.ClassMember | N.TsNamedTypeElementBase,\n ): N.Identifier {\n const variance = this.flowParseVariance();\n const key = super.parsePropertyName(node);\n // $FlowIgnore (\"variance\" not defined on TsNamedTypeElementBase)\n node.variance = variance;\n return key;\n }\n\n // parse type parameters for object method shorthand\n parseObjPropValue(\n prop: N.ObjectMember,\n startPos: ?number,\n startLoc: ?Position,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n refShorthandDefaultPos: ?Pos,\n containsEsc: boolean,\n ): void {\n if ((prop: $FlowFixMe).variance) {\n this.unexpected((prop: $FlowFixMe).variance.start);\n }\n delete (prop: $FlowFixMe).variance;\n\n let typeParameters;\n\n // method shorthand\n if (this.isRelational(\"<\")) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(tt.parenL)) this.unexpected();\n }\n\n super.parseObjPropValue(\n prop,\n startPos,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n refShorthandDefaultPos,\n containsEsc,\n );\n\n // add typeParameters if we found them\n if (typeParameters) {\n (prop.value || prop).typeParameters = typeParameters;\n }\n }\n\n parseAssignableListItemTypes(param: N.Pattern): N.Pattern {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(\n param.start,\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n );\n }\n\n ((param: any): N.Identifier).optional = true;\n }\n if (this.match(tt.colon)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n }\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault(\n startPos?: ?number,\n startLoc?: ?Position,\n left?: ?N.Pattern,\n ): N.Pattern {\n const node = super.parseMaybeDefault(startPos, startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(\n node.typeAnnotation.start,\n \"Type annotations must come before default assignments, \" +\n \"e.g. instead of `age = 25: number` use `age: number = 25`\",\n );\n }\n\n return node;\n }\n\n shouldParseDefaultImport(node: N.ImportDeclaration): boolean {\n if (!hasTypeImportKind(node)) {\n return super.shouldParseDefaultImport(node);\n }\n\n return isMaybeDefaultImport(this.state);\n }\n\n parseImportSpecifierLocal(\n node: N.ImportDeclaration,\n specifier: N.Node,\n type: string,\n contextDescription: string,\n ): void {\n specifier.local = hasTypeImportKind(node)\n ? this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n )\n : this.parseIdentifier();\n\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n contextDescription,\n );\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n // parse typeof and type imports\n maybeParseDefaultImportSpecifier(node: N.ImportDeclaration): boolean {\n node.importKind = \"value\";\n\n let kind = null;\n if (this.match(tt._typeof)) {\n kind = \"typeof\";\n } else if (this.isContextual(\"type\")) {\n kind = \"type\";\n }\n if (kind) {\n const lh = this.lookahead();\n\n // import type * is not allowed\n if (kind === \"type\" && lh.type === tt.star) {\n this.unexpected(lh.start);\n }\n\n if (\n isMaybeDefaultImport(lh) ||\n lh.type === tt.braceL ||\n lh.type === tt.star\n ) {\n this.next();\n node.importKind = kind;\n }\n }\n\n return super.maybeParseDefaultImportSpecifier(node);\n }\n\n // parse import-type/typeof shorthand\n parseImportSpecifier(node: N.ImportDeclaration): void {\n const specifier = this.startNode();\n const firstIdentLoc = this.state.start;\n const firstIdent = this.parseIdentifier(true);\n\n let specifierTypeKind = null;\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n\n let isBinding = false;\n if (this.isContextual(\"as\") && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (\n specifierTypeKind !== null &&\n !this.match(tt.name) &&\n !this.state.type.keyword\n ) {\n // `import {type as ,` or `import {type as }`\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = as_ident.__clone();\n } else {\n // `import {type as foo`\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else if (\n specifierTypeKind !== null &&\n (this.match(tt.name) || this.state.type.keyword)\n ) {\n // `import {type foo`\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n if (this.eatContextual(\"as\")) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = specifier.imported.__clone();\n }\n } else {\n isBinding = true;\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = specifier.imported.__clone();\n }\n\n const nodeIsTypeImport = hasTypeImportKind(node);\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (nodeIsTypeImport && specifierIsTypeImport) {\n this.raise(\n firstIdentLoc,\n \"The `type` and `typeof` keywords on named imports can only be used on regular \" +\n \"`import` statements. It cannot be used with `import type` or `import typeof` statements\",\n );\n }\n\n if (nodeIsTypeImport || specifierIsTypeImport) {\n this.checkReservedType(\n specifier.local.name,\n specifier.local.start,\n /* declaration */ true,\n );\n }\n\n if (isBinding && !nodeIsTypeImport && !specifierIsTypeImport) {\n this.checkReservedWord(\n specifier.local.name,\n specifier.start,\n true,\n true,\n );\n }\n\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n \"import specifier\",\n );\n node.specifiers.push(this.finishNode(specifier, \"ImportSpecifier\"));\n }\n\n // parse function type parameters - function foo<T>() {}\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n // $FlowFixMe\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.isRelational(\"<\")) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, allowModifiers);\n }\n\n // parse flow type annotations on variable declarator heads - let foo: string = bar\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\",\n ): void {\n super.parseVarId(decl, kind);\n if (this.match(tt.colon)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n // todo description\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n // We need to support type parameter declarations for arrow functions. This\n // is tricky. There are three situations we need to handle\n //\n // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n // fails, we'll try an arrow function. If that fails, we'll throw the JSX\n // error.\n // 2. This is an arrow function. We'll parse the type parameter declaration,\n // parse the rest, make sure the rest is an arrow function, and go from\n // there\n // 3. This is neither. Just call the super method\n parseMaybeAssign(\n noIn?: ?boolean,\n refShorthandDefaultPos?: ?Pos,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n let state = null;\n\n let jsx;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.isRelational(\"<\"))\n ) {\n state = this.state.clone();\n\n jsx = this.tryParse(\n () =>\n super.parseMaybeAssign(\n noIn,\n refShorthandDefaultPos,\n afterLeftParse,\n refNeedsArrowPos,\n ),\n state,\n );\n /*:: invariant(!jsx.aborted) */\n\n if (!jsx.error) return jsx.node;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n if (context[context.length - 1] === tc.j_oTag) {\n context.length -= 2;\n } else if (context[context.length - 1] === tc.j_expr) {\n context.length -= 1;\n }\n }\n\n if ((jsx && jsx.error) || this.isRelational(\"<\")) {\n state = state || this.state.clone();\n\n let typeParameters;\n\n const arrow = this.tryParse(() => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n\n const arrowExpression = this.forwardNoArrowParamsConversionAt(\n typeParameters,\n () =>\n super.parseMaybeAssign(\n noIn,\n refShorthandDefaultPos,\n afterLeftParse,\n refNeedsArrowPos,\n ),\n );\n arrowExpression.typeParameters = typeParameters;\n this.resetStartLocationFromNode(arrowExpression, typeParameters);\n\n return arrowExpression;\n }, state);\n\n const arrowExpression: ?N.ArrowFunctionExpression =\n arrow.node && arrow.node.type === \"ArrowFunctionExpression\"\n ? arrow.node\n : null;\n\n if (!arrow.error && arrowExpression) return arrowExpression;\n\n // If we are here, both JSX and Flow parsing attemps failed.\n // Give the precedence to the JSX error, except if JSX had an\n // unrecoverable error while Flow didn't.\n // If the error is recoverable, we can only re-report it if there is\n // a node we can return.\n\n if (jsx && jsx.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n return arrowExpression;\n }\n\n if (jsx && jsx.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n\n /*:: invariant(typeParameters) */\n throw this.raise(\n typeParameters.start,\n \"Expected an arrow function after this type parameter declaration\",\n );\n }\n\n return super.parseMaybeAssign(\n noIn,\n refShorthandDefaultPos,\n afterLeftParse,\n refNeedsArrowPos,\n );\n }\n\n // handle return types for arrow functions\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n\n const typeNode = this.startNode();\n\n [\n // $FlowFixMe (destructuring not supported yet)\n typeNode.typeAnnotation,\n // $FlowFixMe (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser();\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(tt.arrow)) this.unexpected();\n\n return typeNode;\n });\n\n if (result.thrown) return null;\n /*:: invariant(result.node) */\n\n if (result.error) this.state = result.failState;\n\n // assign after it is clear it is an arrow\n node.returnType = result.node.typeAnnotation\n ? this.finishNode(result.node, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseArrow();\n }\n\n setArrowFunctionParameters(\n node: N.ArrowFunctionExpression,\n params: N.Expression[],\n ): void {\n if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {\n node.params = params;\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n isArrowFunction: ?boolean,\n ): void {\n if (\n isArrowFunction &&\n this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1\n ) {\n return;\n }\n\n return super.checkParams(...arguments);\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n return super.parseParenAndDistinguishExpression(\n canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1,\n );\n }\n\n parseSubscripts(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls?: ?boolean,\n ): N.Expression {\n if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.noArrowAt.indexOf(startPos) !== -1\n ) {\n this.next();\n\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n base = this.finishNode(node, \"CallExpression\");\n } else if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.isRelational(\"<\")\n ) {\n const state = this.state.clone();\n const arrow = this.tryParse(\n abort =>\n this.parseAsyncArrowWithTypeParameters(startPos, startLoc) ||\n abort(),\n state,\n );\n\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n const result = this.tryParse(\n () => super.parseSubscripts(base, startPos, startLoc, noCalls),\n state,\n );\n\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState;\n return result.node;\n }\n\n throw arrow.error || result.error;\n }\n\n return super.parseSubscripts(base, startPos, startLoc, noCalls);\n }\n\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n subscriptState: N.ParseSubscriptState,\n ): N.Expression {\n if (this.match(tt.questionDot) && this.isLookaheadRelational(\"<\")) {\n this.expectPlugin(\"optionalChaining\");\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node: N.OptionalCallExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.callee = base;\n node.typeArguments = this.flowParseTypeParameterInstantiation();\n this.expect(tt.parenL);\n // $FlowFixMe\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else if (\n !noCalls &&\n this.shouldParseTypes() &&\n this.isRelational(\"<\")\n ) {\n const node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n const result = this.tryParse(() => {\n node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(tt.parenL);\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n if (subscriptState.optionalChainMember) node.optional = false;\n return this.finishCallExpression(\n node,\n subscriptState.optionalChainMember,\n );\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(\n base,\n startPos,\n startLoc,\n noCalls,\n subscriptState,\n );\n }\n\n parseNewArguments(node: N.NewExpression): void {\n let targs = null;\n if (this.shouldParseTypes() && this.isRelational(\"<\")) {\n targs = this.tryParse(() =>\n this.flowParseTypeParameterInstantiationCallOrNew(),\n ).node;\n }\n node.typeArguments = targs;\n\n super.parseNewArguments(node);\n }\n\n parseAsyncArrowWithTypeParameters(\n startPos: number,\n startLoc: Position,\n ): ?N.ArrowFunctionExpression {\n const node = this.startNodeAt(startPos, startLoc);\n this.parseFunctionParams(node);\n if (!this.parseArrow(node)) return;\n return this.parseArrowExpression(\n node,\n /* params */ undefined,\n /* isAsync */ true,\n );\n }\n\n readToken_mult_modulo(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.asterisk &&\n next === charCodes.slash &&\n this.state.hasFlowComment\n ) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.verticalBar &&\n next === charCodes.rightCurlyBrace\n ) {\n // '|}'\n this.finishOp(tt.braceBarR, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(this.state.pos, \"Unterminated flow-comment\");\n }\n return fileNode;\n }\n\n skipBlockComment(): void {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n this.unexpected(\n null,\n \"Cannot have a flow comment inside another flow comment\",\n );\n }\n this.hasFlowCommentCompletion();\n this.state.pos += this.skipFlowComment();\n this.state.hasFlowComment = true;\n return;\n }\n\n if (this.state.hasFlowComment) {\n const end = this.input.indexOf(\"*-/\", (this.state.pos += 2));\n if (end === -1) {\n throw this.raise(this.state.pos - 2, \"Unterminated comment\");\n }\n this.state.pos = end + 3;\n return;\n }\n\n super.skipBlockComment();\n }\n\n skipFlowComment(): number | boolean {\n const { pos } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while (\n [charCodes.space, charCodes.tab].includes(\n this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n )\n ) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n return shiftToFirstNonWhiteSpace + 2; // check for /*::\n }\n if (\n this.input.slice(\n shiftToFirstNonWhiteSpace + pos,\n shiftToFirstNonWhiteSpace + pos + 12,\n ) === \"flow-include\"\n ) {\n return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n }\n if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n }\n return false;\n }\n\n hasFlowCommentCompletion(): void {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(this.state.pos, \"Unterminated comment\");\n }\n }\n\n // Flow enum parsing\n\n flowEnumErrorBooleanMemberNotInitialized(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` ` +\n `or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorInvalidMemberName(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n const suggestion = memberName[0].toUpperCase() + memberName.slice(1);\n this.raise(\n pos,\n `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using ` +\n `\\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorDuplicateMemberName(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used ` +\n `before in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorInconsistentMemberValues(\n pos: number,\n { enumName }: { enumName: string },\n ): void {\n this.raise(\n pos,\n `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or ` +\n `consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n );\n }\n\n flowEnumErrorInvalidExplicitType(\n pos: number,\n {\n enumName,\n suppliedType,\n }: { enumName: string, suppliedType: null | string },\n ) {\n const suggestion =\n `Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in ` +\n `enum \\`${enumName}\\`.`;\n const message =\n suppliedType === null\n ? `Supplied enum type is not valid. ${suggestion}`\n : `Enum type \\`${suppliedType}\\` is not valid. ${suggestion}`;\n return this.raise(pos, message);\n }\n\n flowEnumErrorInvalidMemberInitializer(\n pos: number,\n { enumName, explicitType, memberName }: EnumContext,\n ) {\n let message = null;\n switch (explicitType) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n message =\n `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of ` +\n `\\`${memberName}\\` needs to be a ${explicitType} literal.`;\n break;\n case \"symbol\":\n message =\n `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in ` +\n `enum \\`${enumName}\\`.`;\n break;\n default:\n // null\n message =\n `The enum member initializer for \\`${memberName}\\` needs to be a literal (either ` +\n `a boolean, number, or string) in enum \\`${enumName}\\`.`;\n }\n return this.raise(pos, message);\n }\n\n flowEnumErrorNumberMemberNotInitialized(\n pos: number,\n { enumName, memberName }: { enumName: string, memberName: string },\n ): void {\n this.raise(\n pos,\n `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumErrorStringMemberInconsistentlyInitailized(\n pos: number,\n { enumName }: { enumName: string },\n ): void {\n this.raise(\n pos,\n `String enum members need to consistently either all use initializers, or use no initializers, ` +\n `in enum \\`${enumName}\\`.`,\n );\n }\n\n flowEnumMemberInit(): EnumMemberInit {\n const startPos = this.state.start;\n const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n switch (this.state.type) {\n case tt.num: {\n const literal = this.parseLiteral(this.state.value, \"NumericLiteral\");\n if (endOfInit()) {\n return { type: \"number\", pos: literal.start, value: literal };\n }\n return { type: \"invalid\", pos: startPos };\n }\n case tt.string: {\n const literal = this.parseLiteral(this.state.value, \"StringLiteral\");\n if (endOfInit()) {\n return { type: \"string\", pos: literal.start, value: literal };\n }\n return { type: \"invalid\", pos: startPos };\n }\n case tt._true:\n case tt._false: {\n const literal = this.parseBooleanLiteral();\n if (endOfInit()) {\n return {\n type: \"boolean\",\n pos: literal.start,\n value: literal,\n };\n }\n return { type: \"invalid\", pos: startPos };\n }\n default:\n return { type: \"invalid\", pos: startPos };\n }\n }\n\n flowEnumMemberRaw(): { id: N.Node, init: EnumMemberInit } {\n const pos = this.state.start;\n const id = this.parseIdentifier(true);\n const init = this.eat(tt.eq)\n ? this.flowEnumMemberInit()\n : { type: \"none\", pos };\n return { id, init };\n }\n\n flowEnumCheckExplicitTypeMismatch(\n pos: number,\n context: EnumContext,\n expectedType: EnumExplicitType,\n ): void {\n const { explicitType } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(pos, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType,\n }: {\n enumName: string,\n explicitType: EnumExplicitType,\n }): {|\n booleanMembers: Array<N.Node>,\n numberMembers: Array<N.Node>,\n stringMembers: Array<N.Node>,\n defaultedMembers: Array<N.Node>,\n |} {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: [],\n };\n while (!this.match(tt.braceR)) {\n const memberNode = this.startNode();\n const { id, init } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.flowEnumErrorInvalidMemberName(id.start, {\n enumName,\n memberName,\n });\n }\n if (seenNames.has(memberName)) {\n this.flowEnumErrorDuplicateMemberName(id.start, {\n enumName,\n memberName,\n });\n }\n seenNames.add(memberName);\n const context = { enumName, explicitType, memberName };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\": {\n this.flowEnumCheckExplicitTypeMismatch(\n init.pos,\n context,\n \"boolean\",\n );\n memberNode.init = init.value;\n members.booleanMembers.push(\n this.finishNode(memberNode, \"EnumBooleanMember\"),\n );\n break;\n }\n case \"number\": {\n this.flowEnumCheckExplicitTypeMismatch(init.pos, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(\n this.finishNode(memberNode, \"EnumNumberMember\"),\n );\n break;\n }\n case \"string\": {\n this.flowEnumCheckExplicitTypeMismatch(init.pos, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(\n this.finishNode(memberNode, \"EnumStringMember\"),\n );\n break;\n }\n case \"invalid\": {\n throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context);\n }\n case \"none\": {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(\n init.pos,\n context,\n );\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.pos, context);\n break;\n default:\n members.defaultedMembers.push(\n this.finishNode(memberNode, \"EnumDefaultedMember\"),\n );\n }\n }\n }\n\n if (!this.match(tt.braceR)) {\n this.expect(tt.comma);\n }\n }\n return members;\n }\n\n flowEnumStringMembers(\n initializedMembers: Array<N.Node>,\n defaultedMembers: Array<N.Node>,\n { enumName }: { enumName: string },\n ): Array<N.Node> {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(\n member.start,\n { enumName },\n );\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitailized(\n member.start,\n { enumName },\n );\n }\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName,\n }: {\n enumName: string,\n }): EnumExplicitType {\n if (this.eatContextual(\"of\")) {\n if (!this.match(tt.name)) {\n throw this.flowEnumErrorInvalidExplicitType(this.state.start, {\n enumName,\n suppliedType: null,\n });\n }\n\n const { value } = this.state;\n this.next();\n\n if (\n value !== \"boolean\" &&\n value !== \"number\" &&\n value !== \"string\" &&\n value !== \"symbol\"\n ) {\n this.flowEnumErrorInvalidExplicitType(this.state.start, {\n enumName,\n suppliedType: value,\n });\n }\n\n return value;\n }\n return null;\n }\n\n flowEnumBody(node: N.Node, { enumName, nameLoc }): N.Node {\n const explicitType = this.flowEnumParseExplicitType({ enumName });\n this.expect(tt.braceL);\n const members = this.flowEnumMembers({ enumName, explicitType });\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumSymbolBody\");\n default: {\n // `explicitType` is `null`\n const empty = () => {\n node.members = [];\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.flowEnumErrorInconsistentMemberValues(nameLoc, { enumName });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(node: N.Node): N.Node {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), {\n enumName: id.name,\n nameLoc: id.start,\n });\n return this.finishNode(node, \"EnumDeclaration\");\n }\n };\n","// @flow\n\nconst entities: { [name: string]: string } = {\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\",\n};\nexport default entities;\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml\";\nimport type Parser from \"../../parser\";\nimport { TokenType, types as tt } from \"../../tokenizer/types\";\nimport { TokContext, types as tc } from \"../../tokenizer/context\";\nimport * as N from \"../../types\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier\";\nimport type { Pos, Position } from \"../../util/location\";\nimport { isNewLine } from \"../../util/whitespace\";\n\nconst HEX_NUMBER = /^[\\da-fA-F]+$/;\nconst DECIMAL_NUMBER = /^\\d+$/;\n\n// Be aware that this file is always executed and not only when the plugin is enabled.\n// Therefore this contexts and tokens do always exist.\ntc.j_oTag = new TokContext(\"<tag\", false);\ntc.j_cTag = new TokContext(\"</tag\", false);\ntc.j_expr = new TokContext(\"<tag>...</tag>\", true, true);\n\ntt.jsxName = new TokenType(\"jsxName\");\ntt.jsxText = new TokenType(\"jsxText\", { beforeExpr: true });\ntt.jsxTagStart = new TokenType(\"jsxTagStart\", { startsExpr: true });\ntt.jsxTagEnd = new TokenType(\"jsxTagEnd\");\n\ntt.jsxTagStart.updateContext = function() {\n this.state.context.push(tc.j_expr); // treat as beginning of JSX expression\n this.state.context.push(tc.j_oTag); // start opening tag context\n this.state.exprAllowed = false;\n};\n\ntt.jsxTagEnd.updateContext = function(prevType) {\n const out = this.state.context.pop();\n if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n this.state.context.pop();\n this.state.exprAllowed = this.curContext() === tc.j_expr;\n } else {\n this.state.exprAllowed = true;\n }\n};\n\nfunction isFragment(object: ?N.JSXElement): boolean {\n return object\n ? object.type === \"JSXOpeningFragment\" ||\n object.type === \"JSXClosingFragment\"\n : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return (\n getQualifiedJSXName(object.object) +\n \".\" +\n getQualifiedJSXName(object.property)\n );\n }\n\n // istanbul ignore next\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n // Reads inline JSX contents token.\n\n jsxReadToken(): void {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated JSX contents\");\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case charCodes.lessThan:\n case charCodes.leftCurlyBrace:\n if (this.state.pos === this.state.start) {\n if (ch === charCodes.lessThan && this.state.exprAllowed) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n return super.getTokenFromCode(ch);\n }\n out += this.input.slice(chunkStart, this.state.pos);\n return this.finishToken(tt.jsxText, out);\n\n case charCodes.ampersand:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF: boolean): string {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (\n ch === charCodes.carriageReturn &&\n this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n\n return out;\n }\n\n jsxReadString(quote: number): void {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.ampersand) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n return this.finishToken(tt.string, out);\n }\n\n jsxReadEntity(): string {\n let str = \"\";\n let count = 0;\n let entity;\n let ch = this.input[this.state.pos];\n\n const startPos = ++this.state.pos;\n while (this.state.pos < this.length && count++ < 10) {\n ch = this.input[this.state.pos++];\n if (ch === \";\") {\n if (str[0] === \"#\") {\n if (str[1] === \"x\") {\n str = str.substr(2);\n if (HEX_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 16));\n }\n } else {\n str = str.substr(1);\n if (DECIMAL_NUMBER.test(str)) {\n entity = String.fromCodePoint(parseInt(str, 10));\n }\n }\n } else {\n entity = XHTMLEntities[str];\n }\n break;\n }\n str += ch;\n }\n if (!entity) {\n this.state.pos = startPos;\n return \"&\";\n }\n return entity;\n }\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can\"t contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n jsxReadWord(): void {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === charCodes.dash);\n return this.finishToken(\n tt.jsxName,\n this.input.slice(start, this.state.pos),\n );\n }\n\n // Parse next token as JSX identifier\n\n jsxParseIdentifier(): N.JSXIdentifier {\n const node = this.startNode();\n if (this.match(tt.jsxName)) {\n node.name = this.state.value;\n } else if (this.state.type.keyword) {\n node.name = this.state.type.keyword;\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n // Parse namespaced identifier.\n\n jsxParseNamespacedName(): N.JSXNamespacedName {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(tt.colon)) return name;\n\n const node = this.startNodeAt(startPos, startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n jsxParseElementName():\n | N.JSXIdentifier\n | N.JSXNamespacedName\n | N.JSXMemberExpression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let node = this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(tt.dot)) {\n const newNode = this.startNodeAt(startPos, startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n\n // Parses any type of JSX attribute value.\n\n jsxParseAttributeValue(): N.Expression {\n let node;\n switch (this.state.type) {\n case tt.braceL:\n node = this.startNode();\n this.next();\n node = this.jsxParseExpressionContainer(node);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(\n node.start,\n \"JSX attributes must only be assigned a non-empty expression\",\n );\n }\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom();\n\n default:\n throw this.raise(\n this.state.start,\n \"JSX value should be either an expression or a quoted JSX text\",\n );\n }\n }\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n jsxParseEmptyExpression(): N.JSXEmptyExpression {\n const node = this.startNodeAt(\n this.state.lastTokEnd,\n this.state.lastTokEndLoc,\n );\n return this.finishNodeAt(\n node,\n \"JSXEmptyExpression\",\n this.state.start,\n this.state.startLoc,\n );\n }\n\n // Parse JSX spread child\n\n jsxParseSpreadChild(node: N.JSXSpreadChild): N.JSXSpreadChild {\n this.next(); // ellipsis\n node.expression = this.parseExpression();\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n // Parses JSX expression enclosed into curly brackets.\n\n jsxParseExpressionContainer(\n node: N.JSXExpressionContainer,\n ): N.JSXExpressionContainer {\n if (this.match(tt.braceR)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n node.expression = this.parseExpression();\n }\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n // Parses following JSX attribute name-value pair.\n\n jsxParseAttribute(): N.JSXAttribute {\n const node = this.startNode();\n if (this.eat(tt.braceL)) {\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssign();\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n // Parses JSX opening tag starting after \"<\".\n\n jsxParseOpeningElementAt(\n startPos: number,\n startLoc: Position,\n ): N.JSXOpeningElement {\n const node = this.startNodeAt(startPos, startLoc);\n if (this.match(tt.jsxTagEnd)) {\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(node);\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n const attributes: N.JSXAttribute[] = [];\n while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n // Parses JSX closing tag starting after \"</\".\n\n jsxParseClosingElementAt(\n startPos: number,\n startLoc: Position,\n ): N.JSXClosingElement {\n const node = this.startNodeAt(startPos, startLoc);\n if (this.match(tt.jsxTagEnd)) {\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n // Parses entire JSX element, including it\"s opening tag\n // (starting after \"<\"), attributes, contents and closing tag.\n\n jsxParseElementAt(startPos: number, startLoc: Position): N.JSXElement {\n const node = this.startNodeAt(startPos, startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case tt.jsxTagStart:\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsxParseClosingElementAt(\n startPos,\n startLoc,\n );\n break contents;\n }\n children.push(this.jsxParseElementAt(startPos, startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseExprAtom());\n break;\n\n case tt.braceL: {\n const node = this.startNode();\n this.next();\n if (this.match(tt.ellipsis)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(this.jsxParseExpressionContainer(node));\n }\n\n break;\n }\n // istanbul ignore next - should never happen\n default:\n throw this.unexpected();\n }\n }\n\n if (isFragment(openingElement) && !isFragment(closingElement)) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <>\",\n );\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <\" +\n getQualifiedJSXName(openingElement.name) +\n \">\",\n );\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (\n // $FlowIgnore\n getQualifiedJSXName(closingElement.name) !==\n getQualifiedJSXName(openingElement.name)\n ) {\n this.raise(\n // $FlowIgnore\n closingElement.start,\n \"Expected corresponding JSX closing tag for <\" +\n getQualifiedJSXName(openingElement.name) +\n \">\",\n );\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.isRelational(\"<\")) {\n throw this.raise(\n this.state.start,\n \"Adjacent JSX elements must be wrapped in an enclosing tag. \" +\n \"Did you want a JSX fragment <>...</>?\",\n );\n }\n\n return isFragment(openingElement)\n ? this.finishNode(node, \"JSXFragment\")\n : this.finishNode(node, \"JSXElement\");\n }\n\n // Parses entire JSX element from current position.\n\n jsxParseElement(): N.JSXElement {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startPos, startLoc);\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseExprAtom(refShortHandDefaultPos: ?Pos): N.Expression {\n if (this.match(tt.jsxText)) {\n return this.parseLiteral(this.state.value, \"JSXText\");\n } else if (this.match(tt.jsxTagStart)) {\n return this.jsxParseElement();\n } else if (\n this.isRelational(\"<\") &&\n this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n ) {\n // In case we encounter an lt token here it will always be the start of\n // jsx as the lt sign is not allowed in places that expect an expression\n this.finishToken(tt.jsxTagStart);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refShortHandDefaultPos);\n }\n }\n\n getTokenFromCode(code: number): void {\n if (this.state.inPropertyName) return super.getTokenFromCode(code);\n\n const context = this.curContext();\n\n if (context === tc.j_expr) {\n return this.jsxReadToken();\n }\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (isIdentifierStart(code)) {\n return this.jsxReadWord();\n }\n\n if (code === charCodes.greaterThan) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagEnd);\n }\n\n if (\n (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n context === tc.j_oTag\n ) {\n return this.jsxReadString(code);\n }\n }\n\n if (\n code === charCodes.lessThan &&\n this.state.exprAllowed &&\n this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n ) {\n ++this.state.pos;\n return this.finishToken(tt.jsxTagStart);\n }\n\n return super.getTokenFromCode(code);\n }\n\n updateContext(prevType: TokenType): void {\n if (this.match(tt.braceL)) {\n const curContext = this.curContext();\n if (curContext === tc.j_oTag) {\n this.state.context.push(tc.braceExpression);\n } else if (curContext === tc.j_expr) {\n this.state.context.push(tc.templateQuasi);\n } else {\n super.updateContext(prevType);\n }\n this.state.exprAllowed = true;\n } else if (this.match(tt.slash) && prevType === tt.jsxTagStart) {\n this.state.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n this.state.context.push(tc.j_cTag); // reconsider as closing tag context\n this.state.exprAllowed = false;\n } else {\n return super.updateContext(prevType);\n }\n }\n };\n","// @flow\nimport {\n SCOPE_ARROW,\n SCOPE_ASYNC,\n SCOPE_DIRECT_SUPER,\n SCOPE_FUNCTION,\n SCOPE_GENERATOR,\n SCOPE_SIMPLE_CATCH,\n SCOPE_SUPER,\n SCOPE_PROGRAM,\n SCOPE_VAR,\n SCOPE_CLASS,\n BIND_SCOPE_FUNCTION,\n BIND_SCOPE_VAR,\n BIND_SCOPE_LEXICAL,\n BIND_KIND_VALUE,\n type ScopeFlags,\n type BindingTypes,\n} from \"./scopeflags\";\nimport * as N from \"../types\";\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n flags: ScopeFlags;\n // A list of var-declared names in the current lexical scope\n var: string[] = [];\n // A list of lexically-declared names in the current lexical scope\n lexical: string[] = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n functions: string[] = [];\n\n constructor(flags: ScopeFlags) {\n this.flags = flags;\n }\n}\n\ntype raiseFunction = (number, string) => void;\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope: Scope = Scope> {\n scopeStack: Array<IScope> = [];\n raise: raiseFunction;\n inModule: boolean;\n undefinedExports: Map<string, number> = new Map();\n\n constructor(raise: raiseFunction, inModule: boolean) {\n this.raise = raise;\n this.inModule = inModule;\n }\n\n get inFunction() {\n return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0;\n }\n get inGenerator() {\n return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0;\n }\n get inAsync() {\n return (this.currentVarScope().flags & SCOPE_ASYNC) > 0;\n }\n get allowSuper() {\n return (this.currentThisScope().flags & SCOPE_SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0;\n }\n get inClass() {\n return (this.currentThisScope().flags & SCOPE_CLASS) > 0;\n }\n get inNonArrowFunction() {\n return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlags): Scope {\n return new Scope(flags);\n }\n // This method will be overwritten by subclasses\n +createScope: (flags: ScopeFlags) => IScope;\n\n enter(flags: ScopeFlags) {\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit() {\n this.scopeStack.pop();\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & SCOPE_FUNCTION ||\n (!this.inModule && scope.flags & SCOPE_PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingTypes, pos: number) {\n let scope = this.currentScope();\n if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n scope.functions.push(name);\n } else {\n scope.lexical.push(name);\n }\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BIND_SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n scope.var.push(name);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & SCOPE_VAR) break;\n }\n }\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.inModule && scope.flags & SCOPE_PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n pos: number,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.raise(pos, `Identifier '${name}' has already been declared`);\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (!(bindingType & BIND_KIND_VALUE)) return false;\n\n if (bindingType & BIND_SCOPE_LEXICAL) {\n return (\n scope.lexical.indexOf(name) > -1 ||\n scope.functions.indexOf(name) > -1 ||\n scope.var.indexOf(name) > -1\n );\n }\n\n if (bindingType & BIND_SCOPE_FUNCTION) {\n return (\n scope.lexical.indexOf(name) > -1 ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n scope.var.indexOf(name) > -1)\n );\n }\n\n return (\n (scope.lexical.indexOf(name) > -1 &&\n !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical[0] === name)) ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n scope.functions.indexOf(name) > -1)\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n if (\n this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1 &&\n // In strict mode, scope.functions will always be empty.\n // Modules are strict by default, but the `scriptMode` option\n // can overwrite this behavior.\n this.scopeStack[0].functions.indexOf(id.name) === -1\n ) {\n this.undefinedExports.set(id.name, id.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n // $FlowIgnore\n currentVarScope(): IScope {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR) {\n return scope;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n // $FlowIgnore\n currentThisScope(): IScope {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const scope = this.scopeStack[i];\n if (\n (scope.flags & SCOPE_VAR || scope.flags & SCOPE_CLASS) &&\n !(scope.flags & SCOPE_ARROW)\n ) {\n return scope;\n }\n }\n }\n}\n","// @flow\n\nimport ScopeHandler, { Scope } from \"../../util/scope\";\nimport {\n BIND_KIND_TYPE,\n BIND_FLAGS_TS_ENUM,\n BIND_FLAGS_TS_CONST_ENUM,\n BIND_FLAGS_TS_EXPORT_ONLY,\n BIND_KIND_VALUE,\n BIND_FLAGS_CLASS,\n type ScopeFlags,\n type BindingTypes,\n} from \"../../util/scopeflags\";\nimport * as N from \"../../types\";\n\nclass TypeScriptScope extends Scope {\n types: string[] = [];\n\n // enums (which are also in .types)\n enums: string[] = [];\n\n // const enums (which are also in .enums and .types)\n constEnums: string[] = [];\n\n // classes (which are also in .lexical) and interface (which are also in .types)\n classes: string[] = [];\n\n // namespaces and ambient functions (or classes) are too difficult to track,\n // especially without type analysis.\n // We need to track them anyway, to avoid \"X is not defined\" errors\n // when exporting them.\n exportOnlyBindings: string[] = [];\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n createScope(flags: ScopeFlags): TypeScriptScope {\n return new TypeScriptScope(flags);\n }\n\n declareName(name: string, bindingType: BindingTypes, pos: number) {\n const scope = this.currentScope();\n if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.exportOnlyBindings.push(name);\n return;\n }\n\n super.declareName(...arguments);\n\n if (bindingType & BIND_KIND_TYPE) {\n if (!(bindingType & BIND_KIND_VALUE)) {\n // \"Value\" bindings have already been registered by the superclass.\n this.checkRedeclarationInScope(scope, name, bindingType, pos);\n this.maybeExportDefined(scope, name);\n }\n scope.types.push(name);\n }\n if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.push(name);\n if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.push(name);\n if (bindingType & BIND_FLAGS_CLASS) scope.classes.push(name);\n }\n\n isRedeclaredInScope(\n scope: TypeScriptScope,\n name: string,\n bindingType: BindingTypes,\n ): boolean {\n if (scope.enums.indexOf(name) > -1) {\n if (bindingType & BIND_FLAGS_TS_ENUM) {\n // Enums can be merged with other enums if they are both\n // const or both non-const.\n const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);\n const wasConst = scope.constEnums.indexOf(name) > -1;\n return isConst !== wasConst;\n }\n return true;\n }\n if (bindingType & BIND_FLAGS_CLASS && scope.classes.indexOf(name) > -1) {\n if (scope.lexical.indexOf(name) > -1) {\n // Classes can be merged with interfaces\n return !!(bindingType & BIND_KIND_VALUE);\n } else {\n // Interface can be merged with other classes or interfaces\n return false;\n }\n }\n if (bindingType & BIND_KIND_TYPE && scope.types.indexOf(name) > -1) {\n return true;\n }\n\n return super.isRedeclaredInScope(...arguments);\n }\n\n checkLocalExport(id: N.Identifier) {\n if (\n this.scopeStack[0].types.indexOf(id.name) === -1 &&\n this.scopeStack[0].exportOnlyBindings.indexOf(id.name) === -1\n ) {\n super.checkLocalExport(id);\n }\n }\n}\n","// @flow\n\n/*:: declare var invariant; */\n\nimport type { TokenType } from \"../../tokenizer/types\";\nimport type State from \"../../tokenizer/state\";\nimport { types as tt } from \"../../tokenizer/types\";\nimport { types as ct } from \"../../tokenizer/context\";\nimport * as N from \"../../types\";\nimport type { Pos, Position } from \"../../util/location\";\nimport type Parser from \"../../parser\";\nimport {\n type BindingTypes,\n BIND_NONE,\n SCOPE_TS_MODULE,\n SCOPE_OTHER,\n BIND_TS_ENUM,\n BIND_TS_CONST_ENUM,\n BIND_TS_TYPE,\n BIND_TS_INTERFACE,\n BIND_TS_AMBIENT,\n BIND_TS_NAMESPACE,\n BIND_CLASS,\n BIND_LEXICAL,\n} from \"../../util/scopeflags\";\nimport TypeScriptScopeHandler from \"./scope\";\nimport * as charCodes from \"charcodes\";\n\ntype TsModifier =\n | \"readonly\"\n | \"abstract\"\n | \"declare\"\n | \"static\"\n | \"public\"\n | \"private\"\n | \"protected\";\n\nfunction nonNull<T>(x: ?T): T {\n if (x == null) {\n // $FlowIgnore\n throw new Error(`Unexpected ${x} value.`);\n }\n return x;\n}\n\nfunction assert(x: boolean): void {\n if (!x) {\n throw new Error(\"Assert fail\");\n }\n}\n\ntype ParsingContext =\n | \"EnumMembers\"\n | \"HeritageClauseElement\"\n | \"TupleElementTypes\"\n | \"TypeMembers\"\n | \"TypeParametersOrArguments\";\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\nfunction keywordTypeFromName(\n value: string,\n): N.TsKeywordTypeType | typeof undefined {\n switch (value) {\n case \"any\":\n return \"TSAnyKeyword\";\n case \"boolean\":\n return \"TSBooleanKeyword\";\n case \"bigint\":\n return \"TSBigIntKeyword\";\n case \"never\":\n return \"TSNeverKeyword\";\n case \"number\":\n return \"TSNumberKeyword\";\n case \"object\":\n return \"TSObjectKeyword\";\n case \"string\":\n return \"TSStringKeyword\";\n case \"symbol\":\n return \"TSSymbolKeyword\";\n case \"undefined\":\n return \"TSUndefinedKeyword\";\n case \"unknown\":\n return \"TSUnknownKeyword\";\n default:\n return undefined;\n }\n}\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n getScopeHandler(): Class<TypeScriptScopeHandler> {\n return TypeScriptScopeHandler;\n }\n\n tsIsIdentifier(): boolean {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return this.match(tt.name);\n }\n\n tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...\n this.next();\n return (\n !this.hasPrecedingLineBreak() &&\n !this.match(tt.parenL) &&\n !this.match(tt.parenR) &&\n !this.match(tt.colon) &&\n !this.match(tt.eq) &&\n !this.match(tt.question) &&\n !this.match(tt.bang)\n );\n }\n\n /** Parses a modifier matching one the given modifier names. */\n tsParseModifier<T: TsModifier>(allowedModifiers: T[]): ?T {\n if (!this.match(tt.name)) {\n return undefined;\n }\n\n const modifier = this.state.value;\n if (\n allowedModifiers.indexOf(modifier) !== -1 &&\n this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))\n ) {\n return modifier;\n }\n return undefined;\n }\n\n /** Parses a list of modifiers, in any order.\n * If you need a specific order, you must call this function multiple times:\n * this.tsParseModifiers([\"public\"]);\n * this.tsParseModifiers([\"abstract\", \"readonly\"]);\n */\n tsParseModifiers<T: TsModifier>(\n allowedModifiers: T[],\n ): { [key: TsModifier]: ?true, __proto__: null } {\n const modifiers = Object.create(null);\n\n while (true) {\n const startPos = this.state.start;\n const modifier: ?T = this.tsParseModifier(allowedModifiers);\n\n if (!modifier) break;\n\n if (Object.hasOwnProperty.call(modifiers, modifier)) {\n this.raise(startPos, `Duplicate modifier: '${modifier}'`);\n }\n modifiers[modifier] = true;\n }\n\n return modifiers;\n }\n\n tsIsListTerminator(kind: ParsingContext): boolean {\n switch (kind) {\n case \"EnumMembers\":\n case \"TypeMembers\":\n return this.match(tt.braceR);\n case \"HeritageClauseElement\":\n return this.match(tt.braceL);\n case \"TupleElementTypes\":\n return this.match(tt.bracketR);\n case \"TypeParametersOrArguments\":\n return this.isRelational(\">\");\n }\n\n throw new Error(\"Unreachable\");\n }\n\n tsParseList<T: N.Node>(kind: ParsingContext, parseElement: () => T): T[] {\n const result: T[] = [];\n while (!this.tsIsListTerminator(kind)) {\n // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n result.push(parseElement());\n }\n return result;\n }\n\n tsParseDelimitedList<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n ): T[] {\n return nonNull(\n this.tsParseDelimitedListWorker(\n kind,\n parseElement,\n /* expectSuccess */ true,\n ),\n );\n }\n\n /**\n * If !expectSuccess, returns undefined instead of failing to parse.\n * If expectSuccess, parseElement should always return a defined value.\n */\n tsParseDelimitedListWorker<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => ?T,\n expectSuccess: boolean,\n ): ?(T[]) {\n const result = [];\n\n while (true) {\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n const element = parseElement();\n if (element == null) {\n return undefined;\n }\n result.push(element);\n\n if (this.eat(tt.comma)) {\n continue;\n }\n\n if (this.tsIsListTerminator(kind)) {\n break;\n }\n\n if (expectSuccess) {\n // This will fail with an error about a missing comma\n this.expect(tt.comma);\n }\n return undefined;\n }\n\n return result;\n }\n\n tsParseBracketedList<T: N.Node>(\n kind: ParsingContext,\n parseElement: () => T,\n bracket: boolean,\n skipFirstToken: boolean,\n ): T[] {\n if (!skipFirstToken) {\n if (bracket) {\n this.expect(tt.bracketL);\n } else {\n this.expectRelational(\"<\");\n }\n }\n\n const result = this.tsParseDelimitedList(kind, parseElement);\n\n if (bracket) {\n this.expect(tt.bracketR);\n } else {\n this.expectRelational(\">\");\n }\n\n return result;\n }\n\n tsParseImportType(): N.TsImportType {\n const node: N.TsImportType = this.startNode();\n this.expect(tt._import);\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n this.raise(\n this.state.start,\n \"Argument in a type import must be a string literal\",\n );\n }\n\n // For compatibility to estree we cannot call parseLiteral directly here\n node.argument = this.parseExprAtom();\n this.expect(tt.parenR);\n\n if (this.eat(tt.dot)) {\n node.qualifier = this.tsParseEntityName(/* allowReservedWords */ true);\n }\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSImportType\");\n }\n\n tsParseEntityName(allowReservedWords: boolean): N.TsEntityName {\n let entity: N.TsEntityName = this.parseIdentifier();\n while (this.eat(tt.dot)) {\n const node: N.TsQualifiedName = this.startNodeAtNode(entity);\n node.left = entity;\n node.right = this.parseIdentifier(allowReservedWords);\n entity = this.finishNode(node, \"TSQualifiedName\");\n }\n return entity;\n }\n\n tsParseTypeReference(): N.TsTypeReference {\n const node: N.TsTypeReference = this.startNode();\n node.typeName = this.tsParseEntityName(/* allowReservedWords */ false);\n if (!this.hasPrecedingLineBreak() && this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n return this.finishNode(node, \"TSTypeReference\");\n }\n\n tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n this.next();\n const node: N.TsTypePredicate = this.startNodeAtNode(lhs);\n node.parameterName = lhs;\n node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n return this.finishNode(node, \"TSTypePredicate\");\n }\n\n tsParseThisTypeNode(): N.TsThisType {\n const node: N.TsThisType = this.startNode();\n this.next();\n return this.finishNode(node, \"TSThisType\");\n }\n\n tsParseTypeQuery(): N.TsTypeQuery {\n const node: N.TsTypeQuery = this.startNode();\n this.expect(tt._typeof);\n if (this.match(tt._import)) {\n node.exprName = this.tsParseImportType();\n } else {\n node.exprName = this.tsParseEntityName(/* allowReservedWords */ true);\n }\n return this.finishNode(node, \"TSTypeQuery\");\n }\n\n tsParseTypeParameter(): N.TsTypeParameter {\n const node: N.TsTypeParameter = this.startNode();\n node.name = this.parseIdentifierName(node.start);\n node.constraint = this.tsEatThenParseType(tt._extends);\n node.default = this.tsEatThenParseType(tt.eq);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsTryParseTypeParameters(): ?N.TsTypeParameterDeclaration {\n if (this.isRelational(\"<\")) {\n return this.tsParseTypeParameters();\n }\n }\n\n tsParseTypeParameters() {\n const node: N.TsTypeParameterDeclaration = this.startNode();\n\n if (this.isRelational(\"<\") || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n node.params = this.tsParseBracketedList(\n \"TypeParametersOrArguments\",\n this.tsParseTypeParameter.bind(this),\n /* bracket */ false,\n /* skipFirstToken */ true,\n );\n return this.finishNode(node, \"TSTypeParameterDeclaration\");\n }\n\n tsTryNextParseConstantContext(): ?N.TsTypeReference {\n if (this.lookahead().type === tt._const) {\n this.next();\n return this.tsParseTypeReference();\n }\n return null;\n }\n\n // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n // but here it's always false, because this is only used for types.\n tsFillSignature(\n returnToken: TokenType,\n signature: N.TsSignatureDeclaration,\n ): void {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === tt.arrow;\n signature.typeParameters = this.tsTryParseTypeParameters();\n this.expect(tt.parenL);\n signature.parameters = this.tsParseBindingListForSignature();\n if (returnTokenRequired) {\n signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(\n returnToken,\n );\n } else if (this.match(returnToken)) {\n signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(\n returnToken,\n );\n }\n }\n\n tsParseBindingListForSignature(): $ReadOnlyArray<\n N.Identifier | N.RestElement | N.ObjectPattern | N.ArrayPattern,\n > {\n return this.parseBindingList(tt.parenR, charCodes.rightParenthesis).map(\n pattern => {\n if (\n pattern.type !== \"Identifier\" &&\n pattern.type !== \"RestElement\" &&\n pattern.type !== \"ObjectPattern\" &&\n pattern.type !== \"ArrayPattern\"\n ) {\n this.raise(\n pattern.start,\n \"Name in a signature must be an Identifier, ObjectPattern or ArrayPattern,\" +\n `instead got ${pattern.type}`,\n );\n }\n return (pattern: any);\n },\n );\n }\n\n tsParseTypeMemberSemicolon(): void {\n if (!this.eat(tt.comma)) {\n this.semicolon();\n }\n }\n\n tsParseSignatureMember(\n kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n node: N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration,\n ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n this.tsFillSignature(tt.colon, node);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, kind);\n }\n\n tsIsUnambiguouslyIndexSignature() {\n this.next(); // Skip '{'\n return this.eat(tt.name) && this.match(tt.colon);\n }\n\n tsTryParseIndexSignature(node: N.Node): ?N.TsIndexSignature {\n if (\n !(\n this.match(tt.bracketL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n )\n ) {\n return undefined;\n }\n\n this.expect(tt.bracketL);\n const id = this.parseIdentifier();\n id.typeAnnotation = this.tsParseTypeAnnotation();\n this.resetEndLocation(id); // set end position to end of type\n\n this.expect(tt.bracketR);\n node.parameters = [id];\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(node, \"TSIndexSignature\");\n }\n\n tsParsePropertyOrMethodSignature(\n node: N.TsPropertySignature | N.TsMethodSignature,\n readonly: boolean,\n ): N.TsPropertySignature | N.TsMethodSignature {\n if (this.eat(tt.question)) node.optional = true;\n const nodeAny: any = node;\n\n if (!readonly && (this.match(tt.parenL) || this.isRelational(\"<\"))) {\n const method: N.TsMethodSignature = nodeAny;\n this.tsFillSignature(tt.colon, method);\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(method, \"TSMethodSignature\");\n } else {\n const property: N.TsPropertySignature = nodeAny;\n if (readonly) property.readonly = true;\n const type = this.tsTryParseTypeAnnotation();\n if (type) property.typeAnnotation = type;\n this.tsParseTypeMemberSemicolon();\n return this.finishNode(property, \"TSPropertySignature\");\n }\n }\n\n tsParseTypeMember(): N.TsTypeElement {\n const node: any = this.startNode();\n\n if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n }\n\n if (this.match(tt._new)) {\n const id: N.Identifier = this.startNode();\n this.next();\n if (this.match(tt.parenL) || this.isRelational(\"<\")) {\n return this.tsParseSignatureMember(\n \"TSConstructSignatureDeclaration\",\n node,\n );\n } else {\n node.key = this.createIdentifier(id, \"new\");\n return this.tsParsePropertyOrMethodSignature(node, false);\n }\n }\n\n const readonly = !!this.tsParseModifier([\"readonly\"]);\n\n const idx = this.tsTryParseIndexSignature(node);\n if (idx) {\n if (readonly) node.readonly = true;\n return idx;\n }\n\n this.parsePropertyName(node);\n return this.tsParsePropertyOrMethodSignature(node, readonly);\n }\n\n tsParseTypeLiteral(): N.TsTypeLiteral {\n const node: N.TsTypeLiteral = this.startNode();\n node.members = this.tsParseObjectTypeMembers();\n return this.finishNode(node, \"TSTypeLiteral\");\n }\n\n tsParseObjectTypeMembers(): $ReadOnlyArray<N.TsTypeElement> {\n this.expect(tt.braceL);\n const members = this.tsParseList(\n \"TypeMembers\",\n this.tsParseTypeMember.bind(this),\n );\n this.expect(tt.braceR);\n return members;\n }\n\n tsIsStartOfMappedType(): boolean {\n this.next();\n if (this.eat(tt.plusMin)) {\n return this.isContextual(\"readonly\");\n }\n if (this.isContextual(\"readonly\")) {\n this.next();\n }\n if (!this.match(tt.bracketL)) {\n return false;\n }\n this.next();\n if (!this.tsIsIdentifier()) {\n return false;\n }\n this.next();\n return this.match(tt._in);\n }\n\n tsParseMappedTypeParameter(): N.TsTypeParameter {\n const node: N.TsTypeParameter = this.startNode();\n node.name = this.parseIdentifierName(node.start);\n node.constraint = this.tsExpectThenParseType(tt._in);\n return this.finishNode(node, \"TSTypeParameter\");\n }\n\n tsParseMappedType(): N.TsMappedType {\n const node: N.TsMappedType = this.startNode();\n\n this.expect(tt.braceL);\n\n if (this.match(tt.plusMin)) {\n node.readonly = this.state.value;\n this.next();\n this.expectContextual(\"readonly\");\n } else if (this.eatContextual(\"readonly\")) {\n node.readonly = true;\n }\n\n this.expect(tt.bracketL);\n node.typeParameter = this.tsParseMappedTypeParameter();\n this.expect(tt.bracketR);\n\n if (this.match(tt.plusMin)) {\n node.optional = this.state.value;\n this.next();\n this.expect(tt.question);\n } else if (this.eat(tt.question)) {\n node.optional = true;\n }\n\n node.typeAnnotation = this.tsTryParseType();\n this.semicolon();\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"TSMappedType\");\n }\n\n tsParseTupleType(): N.TsTupleType {\n const node: N.TsTupleType = this.startNode();\n node.elementTypes = this.tsParseBracketedList(\n \"TupleElementTypes\",\n this.tsParseTupleElementType.bind(this),\n /* bracket */ true,\n /* skipFirstToken */ false,\n );\n\n // Validate the elementTypes to ensure:\n // No mandatory elements may follow optional elements\n // If there's a rest element, it must be at the end of the tuple\n let seenOptionalElement = false;\n node.elementTypes.forEach(elementNode => {\n if (elementNode.type === \"TSOptionalType\") {\n seenOptionalElement = true;\n } else if (seenOptionalElement && elementNode.type !== \"TSRestType\") {\n this.raise(\n elementNode.start,\n \"A required element cannot follow an optional element.\",\n );\n }\n });\n\n return this.finishNode(node, \"TSTupleType\");\n }\n\n tsParseTupleElementType(): N.TsType {\n // parses `...TsType[]`\n if (this.match(tt.ellipsis)) {\n const restNode: N.TsRestType = this.startNode();\n this.next(); // skips ellipsis\n restNode.typeAnnotation = this.tsParseType();\n if (\n this.match(tt.comma) &&\n this.lookaheadCharCode() !== charCodes.rightSquareBracket\n ) {\n this.raiseRestNotLast(this.state.start);\n }\n return this.finishNode(restNode, \"TSRestType\");\n }\n\n const type = this.tsParseType();\n // parses `TsType?`\n if (this.eat(tt.question)) {\n const optionalTypeNode: N.TsOptionalType = this.startNodeAtNode(type);\n optionalTypeNode.typeAnnotation = type;\n return this.finishNode(optionalTypeNode, \"TSOptionalType\");\n }\n return type;\n }\n\n tsParseParenthesizedType(): N.TsParenthesizedType {\n const node = this.startNode();\n this.expect(tt.parenL);\n node.typeAnnotation = this.tsParseType();\n this.expect(tt.parenR);\n return this.finishNode(node, \"TSParenthesizedType\");\n }\n\n tsParseFunctionOrConstructorType(\n type: \"TSFunctionType\" | \"TSConstructorType\",\n ): N.TsFunctionOrConstructorType {\n const node: N.TsFunctionOrConstructorType = this.startNode();\n if (type === \"TSConstructorType\") {\n this.expect(tt._new);\n }\n this.tsFillSignature(tt.arrow, node);\n return this.finishNode(node, type);\n }\n\n tsParseLiteralTypeNode(): N.TsLiteralType {\n const node: N.TsLiteralType = this.startNode();\n node.literal = (() => {\n switch (this.state.type) {\n case tt.num:\n case tt.string:\n case tt._true:\n case tt._false:\n // For compatibility to estree we cannot call parseLiteral directly here\n return this.parseExprAtom();\n default:\n throw this.unexpected();\n }\n })();\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseTemplateLiteralType(): N.TsType {\n const node: N.TsLiteralType = this.startNode();\n const templateNode = this.parseTemplate(false);\n if (templateNode.expressions.length > 0) {\n this.raise(\n templateNode.expressions[0].start,\n \"Template literal types cannot have any substitution\",\n );\n }\n node.literal = templateNode;\n return this.finishNode(node, \"TSLiteralType\");\n }\n\n tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n const thisKeyword = this.tsParseThisTypeNode();\n if (this.isContextual(\"is\") && !this.hasPrecedingLineBreak()) {\n return this.tsParseThisTypePredicate(thisKeyword);\n } else {\n return thisKeyword;\n }\n }\n\n tsParseNonArrayType(): N.TsType {\n switch (this.state.type) {\n case tt.name:\n case tt._void:\n case tt._null: {\n const type = this.match(tt._void)\n ? \"TSVoidKeyword\"\n : this.match(tt._null)\n ? \"TSNullKeyword\"\n : keywordTypeFromName(this.state.value);\n if (\n type !== undefined &&\n this.lookaheadCharCode() !== charCodes.dot\n ) {\n const node: N.TsKeywordType = this.startNode();\n this.next();\n return this.finishNode(node, type);\n }\n return this.tsParseTypeReference();\n }\n case tt.string:\n case tt.num:\n case tt._true:\n case tt._false:\n return this.tsParseLiteralTypeNode();\n case tt.plusMin:\n if (this.state.value === \"-\") {\n const node: N.TsLiteralType = this.startNode();\n if (this.lookahead().type !== tt.num) {\n throw this.unexpected();\n }\n node.literal = this.parseMaybeUnary();\n return this.finishNode(node, \"TSLiteralType\");\n }\n break;\n case tt._this:\n return this.tsParseThisTypeOrThisTypePredicate();\n case tt._typeof:\n return this.tsParseTypeQuery();\n case tt._import:\n return this.tsParseImportType();\n case tt.braceL:\n return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n ? this.tsParseMappedType()\n : this.tsParseTypeLiteral();\n case tt.bracketL:\n return this.tsParseTupleType();\n case tt.parenL:\n return this.tsParseParenthesizedType();\n case tt.backQuote:\n return this.tsParseTemplateLiteralType();\n }\n\n throw this.unexpected();\n }\n\n tsParseArrayTypeOrHigher(): N.TsType {\n let type = this.tsParseNonArrayType();\n while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n if (this.match(tt.bracketR)) {\n const node: N.TsArrayType = this.startNodeAtNode(type);\n node.elementType = type;\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSArrayType\");\n } else {\n const node: N.TsIndexedAccessType = this.startNodeAtNode(type);\n node.objectType = type;\n node.indexType = this.tsParseType();\n this.expect(tt.bracketR);\n type = this.finishNode(node, \"TSIndexedAccessType\");\n }\n }\n return type;\n }\n\n tsParseTypeOperator(\n operator: \"keyof\" | \"unique\" | \"readonly\",\n ): N.TsTypeOperator {\n const node: N.TsTypeOperator = this.startNode();\n this.expectContextual(operator);\n node.operator = operator;\n node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n if (operator === \"readonly\") {\n this.tsCheckTypeAnnotationForReadOnly(node);\n }\n\n return this.finishNode(node, \"TSTypeOperator\");\n }\n\n tsCheckTypeAnnotationForReadOnly(node: N.Node) {\n switch (node.typeAnnotation.type) {\n case \"TSTupleType\":\n case \"TSArrayType\":\n return;\n default:\n this.raise(\n node.start,\n \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n );\n }\n }\n\n tsParseInferType(): N.TsInferType {\n const node = this.startNode();\n this.expectContextual(\"infer\");\n const typeParameter = this.startNode();\n typeParameter.name = this.parseIdentifierName(typeParameter.start);\n node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n return this.finishNode(node, \"TSInferType\");\n }\n\n tsParseTypeOperatorOrHigher(): N.TsType {\n const operator = [\"keyof\", \"unique\", \"readonly\"].find(kw =>\n this.isContextual(kw),\n );\n return operator\n ? this.tsParseTypeOperator(operator)\n : this.isContextual(\"infer\")\n ? this.tsParseInferType()\n : this.tsParseArrayTypeOrHigher();\n }\n\n tsParseUnionOrIntersectionType(\n kind: \"TSUnionType\" | \"TSIntersectionType\",\n parseConstituentType: () => N.TsType,\n operator: TokenType,\n ): N.TsType {\n this.eat(operator);\n let type = parseConstituentType();\n if (this.match(operator)) {\n const types = [type];\n while (this.eat(operator)) {\n types.push(parseConstituentType());\n }\n const node: N.TsUnionType | N.TsIntersectionType = this.startNodeAtNode(\n type,\n );\n node.types = types;\n type = this.finishNode(node, kind);\n }\n return type;\n }\n\n tsParseIntersectionTypeOrHigher(): N.TsType {\n return this.tsParseUnionOrIntersectionType(\n \"TSIntersectionType\",\n this.tsParseTypeOperatorOrHigher.bind(this),\n tt.bitwiseAND,\n );\n }\n\n tsParseUnionTypeOrHigher() {\n return this.tsParseUnionOrIntersectionType(\n \"TSUnionType\",\n this.tsParseIntersectionTypeOrHigher.bind(this),\n tt.bitwiseOR,\n );\n }\n\n tsIsStartOfFunctionType() {\n if (this.isRelational(\"<\")) {\n return true;\n }\n return (\n this.match(tt.parenL) &&\n this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n );\n }\n\n tsSkipParameterStart(): boolean {\n if (this.match(tt.name) || this.match(tt._this)) {\n this.next();\n return true;\n }\n\n if (this.match(tt.braceL)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(tt.braceL)) {\n ++braceStackCounter;\n } else if (this.match(tt.braceR)) {\n --braceStackCounter;\n }\n this.next();\n }\n return true;\n }\n\n if (this.match(tt.bracketL)) {\n let braceStackCounter = 1;\n this.next();\n\n while (braceStackCounter > 0) {\n if (this.match(tt.bracketL)) {\n ++braceStackCounter;\n } else if (this.match(tt.bracketR)) {\n --braceStackCounter;\n }\n this.next();\n }\n return true;\n }\n\n return false;\n }\n\n tsIsUnambiguouslyStartOfFunctionType(): boolean {\n this.next();\n if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (this.tsSkipParameterStart()) {\n if (\n this.match(tt.colon) ||\n this.match(tt.comma) ||\n this.match(tt.question) ||\n this.match(tt.eq)\n ) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (this.match(tt.parenR)) {\n this.next();\n if (this.match(tt.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n }\n\n tsParseTypeOrTypePredicateAnnotation(\n returnToken: TokenType,\n ): N.TsTypeAnnotation {\n return this.tsInType(() => {\n const t: N.TsTypeAnnotation = this.startNode();\n this.expect(returnToken);\n\n const asserts = this.tsTryParse(\n this.tsParseTypePredicateAsserts.bind(this),\n );\n\n if (asserts && this.match(tt._this)) {\n // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n // : asserts this is type\n let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n // : asserts this\n if (thisTypePredicate.type === \"TSThisType\") {\n const node: N.TsTypePredicate = this.startNodeAtNode(t);\n node.parameterName = (thisTypePredicate: N.TsThisType);\n node.asserts = true;\n thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n } else {\n (thisTypePredicate: N.TsTypePredicate).asserts = true;\n }\n t.typeAnnotation = thisTypePredicate;\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n const typePredicateVariable =\n this.tsIsIdentifier() &&\n this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n if (!typePredicateVariable) {\n if (!asserts) {\n // : type\n return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n }\n\n const node: N.TsTypePredicate = this.startNodeAtNode(t);\n // : asserts foo\n node.parameterName = this.parseIdentifier();\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n // : asserts foo is type\n const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n const node = this.startNodeAtNode(t);\n node.parameterName = typePredicateVariable;\n node.typeAnnotation = type;\n node.asserts = asserts;\n t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n return this.finishNode(t, \"TSTypeAnnotation\");\n });\n }\n\n tsTryParseTypeOrTypePredicateAnnotation(): ?N.TsTypeAnnotation {\n return this.match(tt.colon)\n ? this.tsParseTypeOrTypePredicateAnnotation(tt.colon)\n : undefined;\n }\n\n tsTryParseTypeAnnotation(): ?N.TsTypeAnnotation {\n return this.match(tt.colon) ? this.tsParseTypeAnnotation() : undefined;\n }\n\n tsTryParseType(): ?N.TsType {\n return this.tsEatThenParseType(tt.colon);\n }\n\n tsParseTypePredicatePrefix(): ?N.Identifier {\n const id = this.parseIdentifier();\n if (this.isContextual(\"is\") && !this.hasPrecedingLineBreak()) {\n this.next();\n return id;\n }\n }\n\n tsParseTypePredicateAsserts(): boolean {\n if (\n !this.match(tt.name) ||\n this.state.value !== \"asserts\" ||\n this.hasPrecedingLineBreak()\n ) {\n return false;\n }\n const containsEsc = this.state.containsEsc;\n this.next();\n if (!this.match(tt.name) && !this.match(tt._this)) {\n return false;\n }\n\n if (containsEsc) {\n this.raise(\n this.state.lastTokStart,\n \"Escape sequence in keyword asserts\",\n );\n }\n\n return true;\n }\n\n tsParseTypeAnnotation(\n eatColon = true,\n t: N.TsTypeAnnotation = this.startNode(),\n ): N.TsTypeAnnotation {\n this.tsInType(() => {\n if (eatColon) this.expect(tt.colon);\n t.typeAnnotation = this.tsParseType();\n });\n return this.finishNode(t, \"TSTypeAnnotation\");\n }\n\n /** Be sure to be in a type context before calling this, using `tsInType`. */\n tsParseType(): N.TsType {\n // Need to set `state.inType` so that we don't parse JSX in a type context.\n assert(this.state.inType);\n const type = this.tsParseNonConditionalType();\n if (this.hasPrecedingLineBreak() || !this.eat(tt._extends)) {\n return type;\n }\n const node: N.TsConditionalType = this.startNodeAtNode(type);\n node.checkType = type;\n node.extendsType = this.tsParseNonConditionalType();\n this.expect(tt.question);\n node.trueType = this.tsParseType();\n this.expect(tt.colon);\n node.falseType = this.tsParseType();\n return this.finishNode(node, \"TSConditionalType\");\n }\n\n tsParseNonConditionalType(): N.TsType {\n if (this.tsIsStartOfFunctionType()) {\n return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n }\n if (this.match(tt._new)) {\n // As in `new () => Date`\n return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n }\n return this.tsParseUnionTypeOrHigher();\n }\n\n tsParseTypeAssertion(): N.TsTypeAssertion {\n const node: N.TsTypeAssertion = this.startNode();\n const _const = this.tsTryNextParseConstantContext();\n node.typeAnnotation = _const || this.tsNextThenParseType();\n this.expectRelational(\">\");\n node.expression = this.parseMaybeUnary();\n return this.finishNode(node, \"TSTypeAssertion\");\n }\n\n tsParseHeritageClause(\n descriptor: string,\n ): $ReadOnlyArray<N.TsExpressionWithTypeArguments> {\n const originalStart = this.state.start;\n\n const delimitedList = this.tsParseDelimitedList(\n \"HeritageClauseElement\",\n this.tsParseExpressionWithTypeArguments.bind(this),\n );\n\n if (!delimitedList.length) {\n this.raise(originalStart, `'${descriptor}' list cannot be empty.`);\n }\n\n return delimitedList;\n }\n\n tsParseExpressionWithTypeArguments(): N.TsExpressionWithTypeArguments {\n const node: N.TsExpressionWithTypeArguments = this.startNode();\n // Note: TS uses parseLeftHandSideExpressionOrHigher,\n // then has grammar errors later if it's not an EntityName.\n node.expression = this.tsParseEntityName(/* allowReservedWords */ false);\n if (this.isRelational(\"<\")) {\n node.typeParameters = this.tsParseTypeArguments();\n }\n\n return this.finishNode(node, \"TSExpressionWithTypeArguments\");\n }\n\n tsParseInterfaceDeclaration(\n node: N.TsInterfaceDeclaration,\n ): N.TsInterfaceDeclaration {\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n BIND_TS_INTERFACE,\n undefined,\n \"typescript interface declaration\",\n );\n node.typeParameters = this.tsTryParseTypeParameters();\n if (this.eat(tt._extends)) {\n node.extends = this.tsParseHeritageClause(\"extends\");\n }\n const body: N.TSInterfaceBody = this.startNode();\n body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n node.body = this.finishNode(body, \"TSInterfaceBody\");\n return this.finishNode(node, \"TSInterfaceDeclaration\");\n }\n\n tsParseTypeAliasDeclaration(\n node: N.TsTypeAliasDeclaration,\n ): N.TsTypeAliasDeclaration {\n node.id = this.parseIdentifier();\n this.checkLVal(node.id, BIND_TS_TYPE, undefined, \"typescript type alias\");\n\n node.typeParameters = this.tsTryParseTypeParameters();\n node.typeAnnotation = this.tsExpectThenParseType(tt.eq);\n this.semicolon();\n return this.finishNode(node, \"TSTypeAliasDeclaration\");\n }\n\n tsInNoContext<T>(cb: () => T): T {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n }\n\n /**\n * Runs `cb` in a type context.\n * This should be called one token *before* the first type token,\n * so that the call to `next()` is run in type context.\n */\n tsInType<T>(cb: () => T): T {\n const oldInType = this.state.inType;\n this.state.inType = true;\n try {\n return cb();\n } finally {\n this.state.inType = oldInType;\n }\n }\n\n tsEatThenParseType(token: TokenType): N.TsType | typeof undefined {\n return !this.match(token) ? undefined : this.tsNextThenParseType();\n }\n\n tsExpectThenParseType(token: TokenType): N.TsType {\n return this.tsDoThenParseType(() => this.expect(token));\n }\n\n tsNextThenParseType(): N.TsType {\n return this.tsDoThenParseType(() => this.next());\n }\n\n tsDoThenParseType(cb: () => void): N.TsType {\n return this.tsInType(() => {\n cb();\n return this.tsParseType();\n });\n }\n\n tsParseEnumMember(): N.TsEnumMember {\n const node: N.TsEnumMember = this.startNode();\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n node.id = this.match(tt.string)\n ? this.parseExprAtom()\n : this.parseIdentifier(/* liberal */ true);\n if (this.eat(tt.eq)) {\n node.initializer = this.parseMaybeAssign();\n }\n return this.finishNode(node, \"TSEnumMember\");\n }\n\n tsParseEnumDeclaration(\n node: N.TsEnumDeclaration,\n isConst: boolean,\n ): N.TsEnumDeclaration {\n if (isConst) node.const = true;\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM,\n undefined,\n \"typescript enum declaration\",\n );\n\n this.expect(tt.braceL);\n node.members = this.tsParseDelimitedList(\n \"EnumMembers\",\n this.tsParseEnumMember.bind(this),\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"TSEnumDeclaration\");\n }\n\n tsParseModuleBlock(): N.TsModuleBlock {\n const node: N.TsModuleBlock = this.startNode();\n this.scope.enter(SCOPE_OTHER);\n\n this.expect(tt.braceL);\n // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n this.parseBlockOrModuleBlockBody(\n (node.body = []),\n /* directives */ undefined,\n /* topLevel */ true,\n /* end */ tt.braceR,\n );\n this.scope.exit();\n return this.finishNode(node, \"TSModuleBlock\");\n }\n\n tsParseModuleOrNamespaceDeclaration(\n node: N.TsModuleDeclaration,\n nested?: boolean = false,\n ): N.TsModuleDeclaration {\n node.id = this.parseIdentifier();\n\n if (!nested) {\n this.checkLVal(\n node.id,\n BIND_TS_NAMESPACE,\n null,\n \"module or namespace declaration\",\n );\n }\n\n if (this.eat(tt.dot)) {\n const inner = this.startNode();\n this.tsParseModuleOrNamespaceDeclaration(inner, true);\n node.body = inner;\n } else {\n this.scope.enter(SCOPE_TS_MODULE);\n node.body = this.tsParseModuleBlock();\n this.scope.exit();\n }\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseAmbientExternalModuleDeclaration(\n node: N.TsModuleDeclaration,\n ): N.TsModuleDeclaration {\n if (this.isContextual(\"global\")) {\n node.global = true;\n node.id = this.parseIdentifier();\n } else if (this.match(tt.string)) {\n node.id = this.parseExprAtom();\n } else {\n this.unexpected();\n }\n if (this.match(tt.braceL)) {\n this.scope.enter(SCOPE_TS_MODULE);\n node.body = this.tsParseModuleBlock();\n this.scope.exit();\n } else {\n this.semicolon();\n }\n\n return this.finishNode(node, \"TSModuleDeclaration\");\n }\n\n tsParseImportEqualsDeclaration(\n node: N.TsImportEqualsDeclaration,\n isExport?: boolean,\n ): N.TsImportEqualsDeclaration {\n node.isExport = isExport || false;\n node.id = this.parseIdentifier();\n this.checkLVal(\n node.id,\n BIND_LEXICAL,\n undefined,\n \"import equals declaration\",\n );\n this.expect(tt.eq);\n node.moduleReference = this.tsParseModuleReference();\n this.semicolon();\n return this.finishNode(node, \"TSImportEqualsDeclaration\");\n }\n\n tsIsExternalModuleReference(): boolean {\n return (\n this.isContextual(\"require\") &&\n this.lookaheadCharCode() === charCodes.leftParenthesis\n );\n }\n\n tsParseModuleReference(): N.TsModuleReference {\n return this.tsIsExternalModuleReference()\n ? this.tsParseExternalModuleReference()\n : this.tsParseEntityName(/* allowReservedWords */ false);\n }\n\n tsParseExternalModuleReference(): N.TsExternalModuleReference {\n const node: N.TsExternalModuleReference = this.startNode();\n this.expectContextual(\"require\");\n this.expect(tt.parenL);\n if (!this.match(tt.string)) {\n throw this.unexpected();\n }\n // For compatibility to estree we cannot call parseLiteral directly here\n node.expression = this.parseExprAtom();\n this.expect(tt.parenR);\n return this.finishNode(node, \"TSExternalModuleReference\");\n }\n\n // Utilities\n\n tsLookAhead<T>(f: () => T): T {\n const state = this.state.clone();\n const res = f();\n this.state = state;\n return res;\n }\n\n tsTryParseAndCatch<T: ?N.NodeBase>(f: () => T): ?T {\n const result = this.tryParse(abort => f() || abort());\n\n if (result.aborted || !result.node) return undefined;\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n tsTryParse<T>(f: () => ?T): ?T {\n const state = this.state.clone();\n const result = f();\n if (result !== undefined && result !== false) {\n return result;\n } else {\n this.state = state;\n return undefined;\n }\n }\n\n tsTryParseDeclare(nany: any): ?N.Declaration {\n if (this.isLineTerminator()) {\n return;\n }\n let starttype = this.state.type;\n let kind;\n\n if (this.isContextual(\"let\")) {\n starttype = tt._var;\n kind = \"let\";\n }\n\n switch (starttype) {\n case tt._function:\n return this.parseFunctionStatement(\n nany,\n /* async */ false,\n /* declarationPosition */ true,\n );\n case tt._class:\n // While this is also set by tsParseExpressionStatement, we need to set it\n // before parsing the class declaration to now how to register it in the scope.\n nany.declare = true;\n return this.parseClass(\n nany,\n /* isStatement */ true,\n /* optionalId */ false,\n );\n case tt._const:\n if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n this.expect(tt._const);\n this.expectContextual(\"enum\");\n return this.tsParseEnumDeclaration(nany, /* isConst */ true);\n }\n // falls through\n case tt._var:\n kind = kind || this.state.value;\n return this.parseVarStatement(nany, kind);\n case tt.name: {\n const value = this.state.value;\n if (value === \"global\") {\n return this.tsParseAmbientExternalModuleDeclaration(nany);\n } else {\n return this.tsParseDeclaration(nany, value, /* next */ true);\n }\n }\n }\n }\n\n // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n tsTryParseExportDeclaration(): ?N.Declaration {\n return this.tsParseDeclaration(\n this.startNode(),\n this.state.value,\n /* next */ true,\n );\n }\n\n tsParseExpressionStatement(node: any, expr: N.Identifier): ?N.Declaration {\n switch (expr.name) {\n case \"declare\": {\n const declaration = this.tsTryParseDeclare(node);\n if (declaration) {\n declaration.declare = true;\n return declaration;\n }\n break;\n }\n case \"global\":\n // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n if (this.match(tt.braceL)) {\n this.scope.enter(SCOPE_TS_MODULE);\n const mod: N.TsModuleDeclaration = node;\n mod.global = true;\n mod.id = expr;\n mod.body = this.tsParseModuleBlock();\n this.scope.exit();\n return this.finishNode(mod, \"TSModuleDeclaration\");\n }\n break;\n\n default:\n return this.tsParseDeclaration(node, expr.name, /* next */ false);\n }\n }\n\n // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n tsParseDeclaration(\n node: any,\n value: string,\n next: boolean,\n ): ?N.Declaration {\n switch (value) {\n case \"abstract\":\n if (this.tsCheckLineTerminatorAndMatch(tt._class, next)) {\n const cls: N.ClassDeclaration = node;\n cls.abstract = true;\n if (next) {\n this.next();\n if (!this.match(tt._class)) {\n this.unexpected(null, tt._class);\n }\n }\n return this.parseClass(\n cls,\n /* isStatement */ true,\n /* optionalId */ false,\n );\n }\n break;\n\n case \"enum\":\n if (next || this.match(tt.name)) {\n if (next) this.next();\n return this.tsParseEnumDeclaration(node, /* isConst */ false);\n }\n break;\n\n case \"interface\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseInterfaceDeclaration(node);\n }\n break;\n\n case \"module\":\n if (next) this.next();\n if (this.match(tt.string)) {\n return this.tsParseAmbientExternalModuleDeclaration(node);\n } else if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n\n case \"namespace\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseModuleOrNamespaceDeclaration(node);\n }\n break;\n\n case \"type\":\n if (this.tsCheckLineTerminatorAndMatch(tt.name, next)) {\n if (next) this.next();\n return this.tsParseTypeAliasDeclaration(node);\n }\n break;\n }\n }\n\n tsCheckLineTerminatorAndMatch(tokenType: TokenType, next: boolean) {\n return (next || this.match(tokenType)) && !this.isLineTerminator();\n }\n\n tsTryParseGenericAsyncArrowFunction(\n startPos: number,\n startLoc: Position,\n ): ?N.ArrowFunctionExpression {\n if (!this.isRelational(\"<\")) {\n return undefined;\n }\n const res: ?N.ArrowFunctionExpression = this.tsTryParseAndCatch(() => {\n const node: N.ArrowFunctionExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.typeParameters = this.tsParseTypeParameters();\n // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n super.parseFunctionParams(node);\n node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n this.expect(tt.arrow);\n return node;\n });\n\n if (!res) {\n return undefined;\n }\n\n return this.parseArrowExpression(\n res,\n /* params are already set */ null,\n /* async */ true,\n );\n }\n\n tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n const node = this.startNode();\n node.params = this.tsInType(() =>\n // Temporarily remove a JSX parsing context, which makes us scan different tokens.\n this.tsInNoContext(() => {\n this.expectRelational(\"<\");\n return this.tsParseDelimitedList(\n \"TypeParametersOrArguments\",\n this.tsParseType.bind(this),\n );\n }),\n );\n // This reads the next token after the `>` too, so do this in the enclosing context.\n // But be sure not to parse a regex in the jsx expression `<C<number> />`, so set exprAllowed = false\n this.state.exprAllowed = false;\n this.expectRelational(\">\");\n return this.finishNode(node, \"TSTypeParameterInstantiation\");\n }\n\n tsIsDeclarationStart(): boolean {\n if (this.match(tt.name)) {\n switch (this.state.value) {\n case \"abstract\":\n case \"declare\":\n case \"enum\":\n case \"interface\":\n case \"module\":\n case \"namespace\":\n case \"type\":\n return true;\n }\n }\n\n return false;\n }\n\n // ======================================================\n // OVERRIDES\n // ======================================================\n\n isExportDefaultSpecifier(): boolean {\n if (this.tsIsDeclarationStart()) return false;\n return super.isExportDefaultSpecifier();\n }\n\n parseAssignableListItem(\n allowModifiers: ?boolean,\n decorators: N.Decorator[],\n ): N.Pattern | N.TSParameterProperty {\n // Store original location/position to include modifiers in range\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n let accessibility: ?N.Accessibility;\n let readonly = false;\n if (allowModifiers) {\n accessibility = this.parseAccessModifier();\n readonly = !!this.tsParseModifier([\"readonly\"]);\n }\n\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n if (accessibility || readonly) {\n const pp: N.TSParameterProperty = this.startNodeAt(startPos, startLoc);\n if (decorators.length) {\n pp.decorators = decorators;\n }\n if (accessibility) pp.accessibility = accessibility;\n if (readonly) pp.readonly = readonly;\n if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n this.raise(\n pp.start,\n \"A parameter property may not be declared using a binding pattern.\",\n );\n }\n pp.parameter = ((elt: any): N.Identifier | N.AssignmentPattern);\n return this.finishNode(pp, \"TSParameterProperty\");\n }\n\n if (decorators.length) {\n left.decorators = decorators;\n }\n\n return elt;\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n\n const bodilessType =\n type === \"FunctionDeclaration\"\n ? \"TSDeclareFunction\"\n : type === \"ClassMethod\"\n ? \"TSDeclareMethod\"\n : undefined;\n if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n this.finishNode(node, bodilessType);\n return;\n }\n\n super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.body && node.id) {\n // Function ids are validated after parsing their body.\n // For bodyless function, we need to do it here.\n this.checkLVal(node.id, BIND_TS_AMBIENT, null, \"function name\");\n } else {\n super.registerFunctionStatementId(...arguments);\n }\n }\n\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n state: N.ParseSubscriptState,\n ): N.Expression {\n if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n this.state.exprAllowed = false;\n this.next();\n\n const nonNullExpression: N.TsNonNullExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n nonNullExpression.expression = base;\n return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n }\n\n if (this.isRelational(\"<\")) {\n // tsTryParseAndCatch is expensive, so avoid if not necessary.\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const result = this.tsTryParseAndCatch(() => {\n if (!noCalls && this.atPossibleAsync(base)) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(\n startPos,\n startLoc,\n );\n if (asyncArrowFn) {\n return asyncArrowFn;\n }\n }\n\n const node: N.CallExpression = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n const typeArguments = this.tsParseTypeArguments();\n\n if (typeArguments) {\n if (!noCalls && this.eat(tt.parenL)) {\n // possibleAsync always false here, because we would have handled it above.\n // $FlowIgnore (won't be any undefined arguments)\n node.arguments = this.parseCallExpressionArguments(\n tt.parenR,\n /* possibleAsync */ false,\n );\n node.typeParameters = typeArguments;\n return this.finishCallExpression(node, state.optionalChainMember);\n } else if (this.match(tt.backQuote)) {\n return this.parseTaggedTemplateExpression(\n startPos,\n startLoc,\n base,\n state,\n typeArguments,\n );\n }\n }\n\n this.unexpected();\n });\n\n if (result) return result;\n }\n\n return super.parseSubscript(base, startPos, startLoc, noCalls, state);\n }\n\n parseNewArguments(node: N.NewExpression): void {\n if (this.isRelational(\"<\")) {\n // tsTryParseAndCatch is expensive, so avoid if not necessary.\n // 99% certain this is `new C<T>();`. But may be `new C < T;`, which is also legal.\n const typeParameters = this.tsTryParseAndCatch(() => {\n const args = this.tsParseTypeArguments();\n if (!this.match(tt.parenL)) this.unexpected();\n return args;\n });\n if (typeParameters) {\n node.typeParameters = typeParameters;\n }\n }\n\n super.parseNewArguments(node);\n }\n\n parseExprOp(\n left: N.Expression,\n leftStartPos: number,\n leftStartLoc: Position,\n minPrec: number,\n noIn: ?boolean,\n ) {\n if (\n nonNull(tt._in.binop) > minPrec &&\n !this.hasPrecedingLineBreak() &&\n this.isContextual(\"as\")\n ) {\n const node: N.TsAsExpression = this.startNodeAt(\n leftStartPos,\n leftStartLoc,\n );\n node.expression = left;\n const _const = this.tsTryNextParseConstantContext();\n if (_const) {\n node.typeAnnotation = _const;\n } else {\n node.typeAnnotation = this.tsNextThenParseType();\n }\n this.finishNode(node, \"TSAsExpression\");\n return this.parseExprOp(\n node,\n leftStartPos,\n leftStartLoc,\n minPrec,\n noIn,\n );\n }\n\n return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn);\n }\n\n checkReservedWord(\n word: string, // eslint-disable-line no-unused-vars\n startLoc: number, // eslint-disable-line no-unused-vars\n checkKeywords: boolean, // eslint-disable-line no-unused-vars\n // eslint-disable-next-line no-unused-vars\n isBinding: boolean,\n ): void {\n // Don't bother checking for TypeScript code.\n // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n // And we have a type checker anyway, so don't bother having the parser do it.\n }\n\n /*\n Don't bother doing this check in TypeScript code because:\n 1. We may have a nested export statement with the same name:\n export const x = 0;\n export namespace N {\n export const x = 1;\n }\n 2. We have a type checker to warn us about this sort of thing.\n */\n checkDuplicateExports() {}\n\n parseImport(node: N.Node): N.AnyImport {\n if (this.match(tt.name) && this.lookahead().type === tt.eq) {\n return this.tsParseImportEqualsDeclaration(node);\n }\n return super.parseImport(node);\n }\n\n parseExport(node: N.Node): N.AnyExport {\n if (this.match(tt._import)) {\n // `export import A = B;`\n this.expect(tt._import);\n return this.tsParseImportEqualsDeclaration(node, /* isExport */ true);\n } else if (this.eat(tt.eq)) {\n // `export = x;`\n const assign: N.TsExportAssignment = node;\n assign.expression = this.parseExpression();\n this.semicolon();\n return this.finishNode(assign, \"TSExportAssignment\");\n } else if (this.eatContextual(\"as\")) {\n // `export as namespace A;`\n const decl: N.TsNamespaceExportDeclaration = node;\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n this.expectContextual(\"namespace\");\n decl.id = this.parseIdentifier();\n this.semicolon();\n return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n } else {\n return super.parseExport(node);\n }\n }\n\n isAbstractClass(): boolean {\n return (\n this.isContextual(\"abstract\") && this.lookahead().type === tt._class\n );\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n if (this.isAbstractClass()) {\n const cls = this.startNode();\n this.next(); // Skip \"abstract\"\n this.parseClass(cls, true, true);\n cls.abstract = true;\n return cls;\n }\n\n // export default interface allowed in:\n // https://github.com/Microsoft/TypeScript/pull/16040\n if (this.state.value === \"interface\") {\n const result = this.tsParseDeclaration(\n this.startNode(),\n this.state.value,\n true,\n );\n\n if (result) return result;\n }\n\n return super.parseExportDefaultExpression();\n }\n\n parseStatementContent(context: ?string, topLevel: ?boolean): N.Statement {\n if (this.state.type === tt._const) {\n const ahead = this.lookahead();\n if (ahead.type === tt.name && ahead.value === \"enum\") {\n const node: N.TsEnumDeclaration = this.startNode();\n this.expect(tt._const);\n this.expectContextual(\"enum\");\n return this.tsParseEnumDeclaration(node, /* isConst */ true);\n }\n }\n return super.parseStatementContent(context, topLevel);\n }\n\n parseAccessModifier(): ?N.Accessibility {\n return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: { hadConstructor: boolean },\n constructorAllowsSuper: boolean,\n ): void {\n const accessibility = this.parseAccessModifier();\n if (accessibility) member.accessibility = accessibility;\n\n super.parseClassMember(classBody, member, state, constructorAllowsSuper);\n }\n\n parseClassMemberWithIsStatic(\n classBody: N.ClassBody,\n member: N.ClassMember | N.TsIndexSignature,\n state: { hadConstructor: boolean },\n isStatic: boolean,\n constructorAllowsSuper: boolean,\n ): void {\n const modifiers = this.tsParseModifiers([\n \"abstract\",\n \"readonly\",\n \"declare\",\n ]);\n\n Object.assign(member, modifiers);\n\n const idx = this.tsTryParseIndexSignature(member);\n if (idx) {\n classBody.body.push(idx);\n\n if (modifiers.abstract) {\n this.raise(\n member.start,\n \"Index signatures cannot have the 'abstract' modifier\",\n );\n }\n if (isStatic) {\n this.raise(\n member.start,\n \"Index signatures cannot have the 'static' modifier\",\n );\n }\n if ((member: any).accessibility) {\n this.raise(\n member.start,\n `Index signatures cannot have an accessibility modifier ('${\n (member: any).accessibility\n }')`,\n );\n }\n\n return;\n }\n\n /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n super.parseClassMemberWithIsStatic(\n classBody,\n member,\n state,\n isStatic,\n constructorAllowsSuper,\n );\n }\n\n parsePostMemberNameModifiers(\n methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n ): void {\n const optional = this.eat(tt.question);\n if (optional) methodOrProp.optional = true;\n\n if ((methodOrProp: any).readonly && this.match(tt.parenL)) {\n this.raise(\n methodOrProp.start,\n \"Class methods cannot have the 'readonly' modifier\",\n );\n }\n\n if ((methodOrProp: any).declare && this.match(tt.parenL)) {\n this.raise(\n methodOrProp.start,\n \"Class methods cannot have the 'declare' modifier\",\n );\n }\n }\n\n // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n // is that e.g. `type()` is valid JS, so we must try parsing that first.\n // If it's really a type, we will parse `type` as the statement, and can correct it here\n // by parsing the rest.\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.Statement {\n const decl =\n expr.type === \"Identifier\"\n ? this.tsParseExpressionStatement(node, expr)\n : undefined;\n return decl || super.parseExpressionStatement(node, expr);\n }\n\n // export type\n // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n shouldParseExportDeclaration(): boolean {\n if (this.tsIsDeclarationStart()) return true;\n return super.shouldParseExportDeclaration();\n }\n\n // An apparent conditional expression could actually be an optional parameter in an arrow function.\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n // only do the expensive clone if there is a question mark\n // and if we come from inside parens\n if (!refNeedsArrowPos || !this.match(tt.question)) {\n return super.parseConditional(\n expr,\n noIn,\n startPos,\n startLoc,\n refNeedsArrowPos,\n );\n }\n\n const result = this.tryParse(() =>\n super.parseConditional(expr, noIn, startPos, startLoc),\n );\n\n if (!result.node) {\n // $FlowIgnore\n refNeedsArrowPos.start = result.error.pos || this.state.start;\n return expr;\n }\n if (result.error) this.state = result.failState;\n return result.node;\n }\n\n // Note: These \"type casts\" are *not* valid TS expressions.\n // But we parse them here and change them when completing the arrow function.\n parseParenItem(\n node: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.Expression {\n node = super.parseParenItem(node, startPos, startLoc);\n if (this.eat(tt.question)) {\n node.optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode: N.TsTypeCastExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n typeCastNode.expression = node;\n typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n }\n\n return node;\n }\n\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n // Store original location/position\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n // \"export declare\" is equivalent to just \"export\".\n const isDeclare = this.eatContextual(\"declare\");\n\n let declaration: ?N.Declaration;\n\n if (this.match(tt.name)) {\n declaration = this.tsTryParseExportDeclaration();\n }\n if (!declaration) {\n declaration = super.parseExportDeclaration(node);\n }\n\n if (declaration && isDeclare) {\n // Reset location to include `declare` in range\n this.resetStartLocation(declaration, startPos, startLoc);\n\n declaration.declare = true;\n }\n\n return declaration;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId: ?boolean,\n ): void {\n if ((!isStatement || optionalId) && this.isContextual(\"implements\")) {\n return;\n }\n\n super.parseClassId(\n node,\n isStatement,\n optionalId,\n (node: any).declare ? BIND_TS_AMBIENT : BIND_CLASS,\n );\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n }\n\n parseClassPropertyAnnotation(\n node: N.ClassProperty | N.ClassPrivateProperty,\n ): void {\n if (!node.optional && this.eat(tt.bang)) {\n node.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) node.typeAnnotation = type;\n }\n\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n this.parseClassPropertyAnnotation(node);\n\n if (node.declare && this.match(tt.equal)) {\n this.raise(\n this.state.start,\n \"'declare' class fields cannot have an initializer\",\n );\n }\n\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n // $FlowIgnore\n if (node.abstract) {\n this.raise(\n node.start,\n \"Private elements cannot have the 'abstract' modifier.\",\n );\n }\n\n // $FlowIgnore\n if (node.accessibility) {\n this.raise(\n node.start,\n `Private elements cannot have an accessibility modifier ('${node.accessibility}')`,\n );\n }\n\n this.parseClassPropertyAnnotation(node);\n return super.parseClassPrivateProperty(node);\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) method.typeParameters = typeParameters;\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (node.superClass && this.isRelational(\"<\")) {\n node.superTypeParameters = this.tsParseTypeArguments();\n }\n if (this.eatContextual(\"implements\")) {\n node.implements = this.tsParseHeritageClause(\"implements\");\n }\n }\n\n parseObjPropValue(prop: N.ObjectMember, ...args): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) prop.typeParameters = typeParameters;\n\n super.parseObjPropValue(prop, ...args);\n }\n\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n const typeParameters = this.tsTryParseTypeParameters();\n if (typeParameters) node.typeParameters = typeParameters;\n super.parseFunctionParams(node, allowModifiers);\n }\n\n // `let x: number;`\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\",\n ): void {\n super.parseVarId(decl, kind);\n if (decl.id.type === \"Identifier\" && this.eat(tt.bang)) {\n decl.definite = true;\n }\n\n const type = this.tsTryParseTypeAnnotation();\n if (type) {\n decl.id.typeAnnotation = type;\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n node.returnType = this.tsParseTypeAnnotation();\n }\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n parseMaybeAssign(...args): N.Expression {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n let state: ?State;\n let jsx;\n let typeCast;\n\n if (this.match(tt.jsxTagStart)) {\n // Prefer to parse JSX if possible. But may be an arrow fn.\n state = this.state.clone();\n\n jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);\n /*:: invariant(!jsx.aborted) */\n\n if (!jsx.error) return jsx.node;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n if (context[context.length - 1] === ct.j_oTag) {\n context.length -= 2;\n } else if (context[context.length - 1] === ct.j_expr) {\n context.length -= 1;\n }\n }\n\n if (!(jsx && jsx.error) && !this.isRelational(\"<\")) {\n return super.parseMaybeAssign(...args);\n }\n\n // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n let typeParameters: N.TsTypeParameterDeclaration;\n state = state || this.state.clone();\n\n const arrow = this.tryParse(abort => {\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n typeParameters = this.tsParseTypeParameters();\n const expr = super.parseMaybeAssign(...args);\n\n if (\n expr.type !== \"ArrowFunctionExpression\" ||\n (expr.extra && expr.extra.parenthesized)\n ) {\n abort();\n }\n\n // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n if (typeParameters && typeParameters.params.length !== 0) {\n this.resetStartLocationFromNode(expr, typeParameters);\n }\n expr.typeParameters = typeParameters;\n return expr;\n }, state);\n\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n if (!jsx) {\n // Try parsing a type cast instead of an arrow function.\n // This will never happen outside of JSX.\n // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n assert(!this.hasPlugin(\"jsx\"));\n\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);\n /*:: invariant(!typeCast.aborted) */\n if (!typeCast.error) return typeCast.node;\n }\n\n if (jsx && jsx.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrow.node) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState;\n return arrow.node;\n }\n\n if (typeCast && typeCast.node) {\n /*:: invariant(typeCast.failState) */\n this.state = typeCast.failState;\n return typeCast.node;\n }\n\n if (jsx && jsx.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n if (typeCast && typeCast.thrown) throw typeCast.error;\n\n throw (jsx && jsx.error) || arrow.error || (typeCast && typeCast.error);\n }\n\n // Handle type assertions\n parseMaybeUnary(refShorthandDefaultPos?: ?Pos): N.Expression {\n if (!this.hasPlugin(\"jsx\") && this.isRelational(\"<\")) {\n return this.tsParseTypeAssertion();\n } else {\n return super.parseMaybeUnary(refShorthandDefaultPos);\n }\n }\n\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n const result = this.tryParse(abort => {\n const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n tt.colon,\n );\n if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n return returnType;\n });\n\n if (result.aborted) return;\n\n if (!result.thrown) {\n if (result.error) this.state = result.failState;\n node.returnType = result.node;\n }\n }\n\n return super.parseArrow(node);\n }\n\n // Allow type annotations inside of a parameter list.\n parseAssignableListItemTypes(param: N.Pattern) {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(\n param.start,\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n );\n }\n\n ((param: any): N.Identifier).optional = true;\n }\n const type = this.tsTryParseTypeAnnotation();\n if (type) param.typeAnnotation = type;\n this.resetEndLocation(param);\n\n return param;\n }\n\n toAssignable(\n node: N.Node,\n isBinding: ?boolean,\n contextDescription: string,\n ): N.Node {\n switch (node.type) {\n case \"TSTypeCastExpression\":\n return super.toAssignable(\n this.typeCastToParameter(node),\n isBinding,\n contextDescription,\n );\n case \"TSParameterProperty\":\n return super.toAssignable(node, isBinding, contextDescription);\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n node.expression = this.toAssignable(\n node.expression,\n isBinding,\n contextDescription,\n );\n return node;\n default:\n return super.toAssignable(node, isBinding, contextDescription);\n }\n }\n\n checkLVal(\n expr: N.Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n ): void {\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n // Allow \"typecasts\" to appear on the left of assignment expressions,\n // because it may be in an arrow function.\n // e.g. `const f = (foo: number = 0) => foo;`\n return;\n case \"TSParameterProperty\":\n this.checkLVal(\n expr.parameter,\n bindingType,\n checkClashes,\n \"parameter property\",\n );\n return;\n case \"TSAsExpression\":\n case \"TSNonNullExpression\":\n case \"TSTypeAssertion\":\n this.checkLVal(\n expr.expression,\n bindingType,\n checkClashes,\n contextDescription,\n );\n return;\n default:\n super.checkLVal(expr, bindingType, checkClashes, contextDescription);\n return;\n }\n }\n\n parseBindingAtom(): N.Pattern {\n switch (this.state.type) {\n case tt._this:\n // \"this\" may be the name of a parameter, so allow it.\n return this.parseIdentifier(/* liberal */ true);\n default:\n return super.parseBindingAtom();\n }\n }\n\n parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {\n if (this.isRelational(\"<\")) {\n const typeArguments = this.tsParseTypeArguments();\n\n if (this.match(tt.parenL)) {\n const call = super.parseMaybeDecoratorArguments(expr);\n call.typeParameters = typeArguments;\n return call;\n }\n\n this.unexpected(this.state.start, tt.parenL);\n }\n\n return super.parseMaybeDecoratorArguments(expr);\n }\n\n // === === === === === === === === === === === === === === === ===\n // Note: All below methods are duplicates of something in flow.js.\n // Not sure what the best way to combine these is.\n // === === === === === === === === === === === === === === === ===\n\n isClassMethod(): boolean {\n return this.isRelational(\"<\") || super.isClassMethod();\n }\n\n isClassProperty(): boolean {\n return (\n this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n );\n }\n\n parseMaybeDefault(...args): N.Pattern {\n const node = super.parseMaybeDefault(...args);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(\n node.typeAnnotation.start,\n \"Type annotations must come before default assignments, \" +\n \"e.g. instead of `age = 25: number` use `age: number = 25`\",\n );\n }\n\n return node;\n }\n\n // ensure that inside types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n if (this.state.inType && (code === 62 || code === 60)) {\n return this.finishOp(tt.relational, 1);\n } else {\n return super.getTokenFromCode(code);\n }\n }\n\n toAssignableList(\n exprList: N.Expression[],\n isBinding: ?boolean,\n ): $ReadOnlyArray<N.Pattern> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (!expr) continue;\n switch (expr.type) {\n case \"TSTypeCastExpression\":\n exprList[i] = this.typeCastToParameter(expr);\n break;\n case \"TSAsExpression\":\n case \"TSTypeAssertion\":\n if (!isBinding) {\n exprList[i] = this.typeCastToParameter(expr);\n } else {\n this.raise(\n expr.start,\n \"Unexpected type cast in parameter position.\",\n );\n }\n break;\n }\n }\n return super.toAssignableList(...arguments);\n }\n\n typeCastToParameter(node: N.TsTypeCastExpression): N.Node {\n node.expression.typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(\n node.expression,\n node.typeAnnotation.end,\n node.typeAnnotation.loc.end,\n );\n\n return node.expression;\n }\n\n toReferencedList(\n exprList: $ReadOnlyArray<?N.Expression>,\n isInParens?: boolean, // eslint-disable-line no-unused-vars\n ): $ReadOnlyArray<?N.Expression> {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr._exprListItem &&\n expr.type === \"TsTypeCastExpression\"\n ) {\n this.raise(expr.start, \"Did not expect a type annotation here.\");\n }\n }\n\n return exprList;\n }\n\n shouldParseArrow() {\n return this.match(tt.colon) || super.shouldParseArrow();\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n canHaveLeadingDecorator() {\n // Avoid unnecessary lookahead in checking for abstract class unless needed!\n return super.canHaveLeadingDecorator() || this.isAbstractClass();\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n if (this.isRelational(\"<\")) {\n const typeArguments = this.tsTryParseAndCatch(() =>\n this.tsParseTypeArguments(),\n );\n if (typeArguments) node.typeParameters = typeArguments;\n }\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n const baseCount = super.getGetterSetterExpectedParamCount(method);\n const firstParam = method.params[0];\n const hasContextParam =\n firstParam &&\n firstParam.type === \"Identifier\" &&\n firstParam.name === \"this\";\n\n return hasContextParam ? baseCount + 1 : baseCount;\n }\n };\n","// @flow\n\nimport * as charCodes from \"charcodes\";\n\nimport { types as tt, TokenType } from \"../tokenizer/types\";\nimport type Parser from \"../parser\";\nimport * as N from \"../types\";\n\ntt.placeholder = new TokenType(\"%%\", { startsExpr: true });\n\nexport type PlaceholderTypes =\n | \"Identifier\"\n | \"StringLiteral\"\n | \"Expression\"\n | \"Statement\"\n | \"Declaration\"\n | \"BlockStatement\"\n | \"ClassBody\"\n | \"Pattern\";\n\n// $PropertyType doesn't support enums. Use a fake \"switch\" (GetPlaceholderNode)\n//type MaybePlaceholder<T: PlaceholderTypes> = $PropertyType<N, T> | N.Placeholder<T>;\n\ntype _Switch<Value, Cases, Index> = $Call<\n (\n $ElementType<$ElementType<Cases, Index>, 0>,\n ) => $ElementType<$ElementType<Cases, Index>, 1>,\n Value,\n>;\ntype $Switch<Value, Cases> = _Switch<Value, Cases, *>;\n\ntype NodeOf<T: PlaceholderTypes> = $Switch<\n T,\n [\n [\"Identifier\", N.Identifier],\n [\"StringLiteral\", N.StringLiteral],\n [\"Expression\", N.Expression],\n [\"Statement\", N.Statement],\n [\"Declaration\", N.Declaration],\n [\"BlockStatement\", N.BlockStatement],\n [\"ClassBody\", N.ClassBody],\n [\"Pattern\", N.Pattern],\n ],\n>;\n\n// Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T: PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n parsePlaceholder<T: PlaceholderTypes>(\n expectedNode: T,\n ): /*?N.Placeholder<T>*/ ?MaybePlaceholder<T> {\n if (this.match(tt.placeholder)) {\n const node = this.startNode();\n this.next();\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n\n // We can't use this.parseIdentifier because\n // we don't want nested placeholders.\n node.name = super.parseIdentifier(/* liberal */ true);\n\n this.assertNoSpace(\"Unexpected space in placeholder.\");\n this.expect(tt.placeholder);\n return this.finishPlaceholder(node, expectedNode);\n }\n }\n\n finishPlaceholder<T: PlaceholderTypes>(\n node: N.Node,\n expectedNode: T,\n ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n const isFinished = !!(node.expectedNode && node.type === \"Placeholder\");\n node.expectedNode = expectedNode;\n\n return isFinished ? node : this.finishNode(node, \"Placeholder\");\n }\n\n /* ============================================================ *\n * tokenizer/index.js *\n * ============================================================ */\n\n getTokenFromCode(code: number) {\n if (\n code === charCodes.percentSign &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n ) {\n return this.finishOp(tt.placeholder, 2);\n }\n\n return super.getTokenFromCode(...arguments);\n }\n\n /* ============================================================ *\n * parser/expression.js *\n * ============================================================ */\n\n parseExprAtom(): MaybePlaceholder<\"Expression\"> {\n return (\n this.parsePlaceholder(\"Expression\") || super.parseExprAtom(...arguments)\n );\n }\n\n parseIdentifier(): MaybePlaceholder<\"Identifier\"> {\n // NOTE: This function only handles identifiers outside of\n // expressions and binding patterns, since they are already\n // handled by the parseExprAtom and parseBindingAtom functions.\n // This is needed, for example, to parse \"class %%NAME%% {}\".\n return (\n this.parsePlaceholder(\"Identifier\") ||\n super.parseIdentifier(...arguments)\n );\n }\n\n checkReservedWord(word: string): void {\n // Sometimes we call #checkReservedWord(node.name), expecting\n // that node is an Identifier. If it is a Placeholder, name\n // will be undefined.\n if (word !== undefined) super.checkReservedWord(...arguments);\n }\n\n /* ============================================================ *\n * parser/lval.js *\n * ============================================================ */\n\n parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n return (\n this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom(...arguments)\n );\n }\n\n checkLVal(expr: N.Expression): void {\n if (expr.type !== \"Placeholder\") super.checkLVal(...arguments);\n }\n\n toAssignable(node: N.Node): N.Node {\n if (\n node &&\n node.type === \"Placeholder\" &&\n node.expectedNode === \"Expression\"\n ) {\n node.expectedNode = \"Pattern\";\n return node;\n }\n return super.toAssignable(...arguments);\n }\n\n /* ============================================================ *\n * parser/statement.js *\n * ============================================================ */\n\n verifyBreakContinue(node: N.BreakStatement | N.ContinueStatement) {\n if (node.label && node.label.type === \"Placeholder\") return;\n super.verifyBreakContinue(...arguments);\n }\n\n parseExpressionStatement(\n node: MaybePlaceholder<\"Statement\">,\n expr: N.Expression,\n ): MaybePlaceholder<\"Statement\"> {\n if (\n expr.type !== \"Placeholder\" ||\n (expr.extra && expr.extra.parenthesized)\n ) {\n return super.parseExpressionStatement(...arguments);\n }\n\n if (this.match(tt.colon)) {\n const stmt: N.LabeledStatement = node;\n stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n this.next();\n stmt.body = this.parseStatement(\"label\");\n return this.finishNode(stmt, \"LabeledStatement\");\n }\n\n this.semicolon();\n\n node.name = expr.name;\n return this.finishPlaceholder(node, \"Statement\");\n }\n\n parseBlock(): MaybePlaceholder<\"BlockStatement\"> {\n return (\n this.parsePlaceholder(\"BlockStatement\") ||\n super.parseBlock(...arguments)\n );\n }\n\n parseFunctionId(): ?MaybePlaceholder<\"Identifier\"> {\n return (\n this.parsePlaceholder(\"Identifier\") ||\n super.parseFunctionId(...arguments)\n );\n }\n\n parseClass<T: N.Class>(\n node: T,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n this.next();\n this.takeDecorators(node);\n\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (placeholder) {\n if (\n this.match(tt._extends) ||\n this.match(tt.placeholder) ||\n this.match(tt.braceL)\n ) {\n node.id = placeholder;\n } else if (optionalId || !isStatement) {\n node.id = null;\n node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n return this.finishNode(node, type);\n } else {\n this.unexpected(null, \"A class name is required\");\n }\n } else {\n this.parseClassId(node, isStatement, optionalId);\n }\n\n this.parseClassSuper(node);\n node.body =\n this.parsePlaceholder(\"ClassBody\") ||\n this.parseClassBody(!!node.superClass);\n return this.finishNode(node, type);\n }\n\n parseExport(node: N.Node): N.Node {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseExport(...arguments);\n\n if (!this.isContextual(\"from\") && !this.match(tt.comma)) {\n // export %%DECL%%;\n node.specifiers = [];\n node.source = null;\n node.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n // export %%NAME%% from \"foo\";\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = placeholder;\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n return super.parseExport(node);\n }\n\n maybeParseExportDefaultSpecifier(node: N.Node): boolean {\n if (node.specifiers && node.specifiers.length > 0) {\n // \"export %%NAME%%\" has already been parsed by #parseExport.\n return true;\n }\n return super.maybeParseExportDefaultSpecifier(...arguments);\n }\n\n checkExport(node: N.ExportNamedDeclaration): void {\n const { specifiers } = node;\n if (specifiers && specifiers.length) {\n node.specifiers = specifiers.filter(\n node => node.exported.type === \"Placeholder\",\n );\n }\n super.checkExport(node);\n node.specifiers = specifiers;\n }\n\n parseImport(\n node: N.Node,\n ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n const placeholder = this.parsePlaceholder(\"Identifier\");\n if (!placeholder) return super.parseImport(...arguments);\n\n node.specifiers = [];\n\n if (!this.isContextual(\"from\") && !this.match(tt.comma)) {\n // import %%STRING%%;\n node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n // import %%DEFAULT%% ...\n const specifier = this.startNodeAtNode(placeholder);\n specifier.local = placeholder;\n this.finishNode(specifier, \"ImportDefaultSpecifier\");\n node.specifiers.push(specifier);\n\n if (this.eat(tt.comma)) {\n // import %%DEFAULT%%, * as ...\n const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n // import %%DEFAULT%%, { ...\n if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n }\n\n this.expectContextual(\"from\");\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n // import ... from %%STRING%%;\n\n return (\n this.parsePlaceholder(\"StringLiteral\") ||\n super.parseImportSource(...arguments)\n );\n }\n };\n","import type Parser from \"../parser\";\nimport { types as tt } from \"../tokenizer/types\";\nimport * as N from \"../types\";\n\nexport default (superClass: Class<Parser>): Class<Parser> =>\n class extends superClass {\n parseV8Intrinsic(): N.Expression {\n if (this.match(tt.modulo)) {\n const v8IntrinsicStart = this.state.start;\n // let the `loc` of Identifier starts from `%`\n const node = this.startNode();\n this.eat(tt.modulo);\n if (this.match(tt.name)) {\n const name = this.parseIdentifierName(this.state.start);\n const identifier = this.createIdentifier(node, name);\n identifier.type = \"V8IntrinsicIdentifier\";\n if (this.match(tt.parenL)) {\n return identifier;\n }\n }\n this.unexpected(v8IntrinsicStart);\n }\n }\n\n /* ============================================================ *\n * parser/expression.js *\n * ============================================================ */\n\n parseExprAtom(): N.Expression {\n return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);\n }\n };\n","// @flow\n\nimport type Parser from \"./parser\";\n\nexport type Plugin = string | [string, Object];\n\nexport type PluginList = $ReadOnlyArray<Plugin>;\n\nexport type MixinPlugin = (superClass: Class<Parser>) => Class<Parser>;\n\nexport function hasPlugin(plugins: PluginList, name: string): boolean {\n return plugins.some(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n}\n\nexport function getPluginOption(\n plugins: PluginList,\n name: string,\n option: string,\n) {\n const plugin = plugins.find(plugin => {\n if (Array.isArray(plugin)) {\n return plugin[0] === name;\n } else {\n return plugin === name;\n }\n });\n\n if (plugin && Array.isArray(plugin)) {\n return plugin[1][option];\n }\n\n return null;\n}\n\nconst PIPELINE_PROPOSALS = [\"minimal\", \"smart\", \"fsharp\"];\n\nexport function validatePlugins(plugins: PluginList) {\n if (hasPlugin(plugins, \"decorators\")) {\n if (hasPlugin(plugins, \"decorators-legacy\")) {\n throw new Error(\n \"Cannot use the decorators and decorators-legacy plugin together\",\n );\n }\n\n const decoratorsBeforeExport = getPluginOption(\n plugins,\n \"decorators\",\n \"decoratorsBeforeExport\",\n );\n if (decoratorsBeforeExport == null) {\n throw new Error(\n \"The 'decorators' plugin requires a 'decoratorsBeforeExport' option,\" +\n \" whose value must be a boolean. If you are migrating from\" +\n \" Babylon/Babel 6 or want to use the old decorators proposal, you\" +\n \" should use the 'decorators-legacy' plugin instead of 'decorators'.\",\n );\n } else if (typeof decoratorsBeforeExport !== \"boolean\") {\n throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n }\n }\n\n if (hasPlugin(plugins, \"flow\") && hasPlugin(plugins, \"typescript\")) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n\n if (hasPlugin(plugins, \"placeholders\") && hasPlugin(plugins, \"v8intrinsic\")) {\n throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n }\n\n if (\n hasPlugin(plugins, \"pipelineOperator\") &&\n !PIPELINE_PROPOSALS.includes(\n getPluginOption(plugins, \"pipelineOperator\", \"proposal\"),\n )\n ) {\n throw new Error(\n \"'pipelineOperator' requires 'proposal' option whose value should be one of: \" +\n PIPELINE_PROPOSALS.map(p => `'${p}'`).join(\", \"),\n );\n }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree\";\nimport flow from \"./plugins/flow\";\nimport jsx from \"./plugins/jsx\";\nimport typescript from \"./plugins/typescript\";\nimport placeholders from \"./plugins/placeholders\";\nimport v8intrinsic from \"./plugins/v8intrinsic\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins: { [name: string]: MixinPlugin } = {\n estree,\n jsx,\n flow,\n typescript,\n v8intrinsic,\n placeholders,\n};\n\nexport const mixinPluginNames: $ReadOnlyArray<string> = Object.keys(\n mixinPlugins,\n);\n","// @flow\n\nimport type { PluginList } from \"./plugin-utils\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"module\" | \"unambiguous\";\n\nexport type Options = {\n sourceType: SourceType,\n sourceFilename?: string,\n startLine: number,\n allowAwaitOutsideFunction: boolean,\n allowReturnOutsideFunction: boolean,\n allowImportExportEverywhere: boolean,\n allowSuperOutsideMethod: boolean,\n allowUndeclaredExports: boolean,\n plugins: PluginList,\n strictMode: ?boolean,\n ranges: boolean,\n tokens: boolean,\n createParenthesizedExpressions: boolean,\n errorRecovery: boolean,\n};\n\nexport const defaultOptions: Options = {\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // Source filename.\n sourceFilename: undefined,\n // Line from which to start counting source. Useful for\n // integration with other tools.\n startLine: 1,\n // When enabled, await at the top level is not considered an\n // error.\n allowAwaitOutsideFunction: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // TODO\n allowSuperOutsideMethod: false,\n // When enabled, export statements can reference undeclared variables.\n allowUndeclaredExports: false,\n // An array of plugins to enable\n plugins: [],\n // TODO\n strictMode: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // Adds all parsed tokens to a `tokens` property on the `File` node\n tokens: false,\n // Whether to create ParenthesizedExpression AST nodes (if false\n // the parser sets extra.parenthesized on the expression nodes instead).\n createParenthesizedExpressions: false,\n // When enabled, errors are attached to the AST instead of being directly thrown.\n // Some errors will still throw, because @babel/parser can't always recover.\n errorRecovery: false,\n};\n\n// Interpret and default an options object\n\nexport function getOptions(opts: ?Options): Options {\n const options: any = {};\n for (const key of Object.keys(defaultOptions)) {\n options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];\n }\n return options;\n}\n","// @flow\n\nimport { lineBreakG } from \"./whitespace\";\n\nexport type Pos = {\n start: number,\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n\n constructor(line: number, col: number) {\n this.line = line;\n this.column = col;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string;\n identifierName: ?string;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // $FlowIgnore (may start as null, but initialized later)\n this.end = end;\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input: string, offset: number): Position {\n let line = 1;\n let lineStart = 0;\n let match;\n lineBreakG.lastIndex = 0;\n while ((match = lineBreakG.exec(input)) && match.index < offset) {\n line++;\n lineStart = lineBreakG.lastIndex;\n }\n\n return new Position(line, offset - lineStart);\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport type State from \"../tokenizer/state\";\nimport type { PluginsMap } from \"./index\";\nimport type ScopeHandler from \"../util/scope\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n options: Options;\n inModule: boolean;\n scope: ScopeHandler<*>;\n plugins: PluginsMap;\n filename: ?string;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n input: string;\n length: number;\n\n hasPlugin(name: string): boolean {\n return this.plugins.has(name);\n }\n\n getPluginOption(plugin: string, name: string) {\n // $FlowIssue\n if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];\n }\n}\n","// @flow\n\n/**\n * Based on the comment attachment algorithm used in espree and estraverse.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport BaseParser from \"./base\";\nimport type { Comment, Node } from \"../types\";\n\nfunction last<T>(stack: $ReadOnlyArray<T>): T {\n return stack[stack.length - 1];\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.trailingComments.push(comment);\n this.state.leadingComments.push(comment);\n }\n\n adjustCommentsAfterTrailingComma(\n node: Node,\n elements: (Node | null)[],\n // When the current node is followed by a token which hasn't a respective AST node, we\n // need to take all the trailing comments to prevent them from being attached to an\n // unrelated node. e.g. in\n // var { x } /* cmt */ = { y }\n // we don't want /* cmt */ to be attached to { y }.\n // On the other hand, in\n // fn(x) [new line] /* cmt */ [new line] y\n // /* cmt */ is both a trailing comment of fn(x) and a leading comment of y\n takeAllComments?: boolean,\n ) {\n if (this.state.leadingComments.length === 0) {\n return;\n }\n\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null) {\n return;\n }\n\n for (let j = 0; j < this.state.leadingComments.length; j++) {\n if (\n this.state.leadingComments[j].end < this.state.commentPreviousNode.end\n ) {\n this.state.leadingComments.splice(j, 1);\n j--;\n }\n }\n\n const newTrailingComments = [];\n for (let i = 0; i < this.state.leadingComments.length; i++) {\n const leadingComment = this.state.leadingComments[i];\n if (leadingComment.end < node.end) {\n newTrailingComments.push(leadingComment);\n\n // Perf: we don't need to splice if we are going to reset the array anyway\n if (!takeAllComments) {\n this.state.leadingComments.splice(i, 1);\n i--;\n }\n } else {\n if (node.trailingComments === undefined) {\n node.trailingComments = [];\n }\n node.trailingComments.push(leadingComment);\n }\n }\n if (takeAllComments) this.state.leadingComments = [];\n\n if (newTrailingComments.length > 0) {\n lastElement.trailingComments = newTrailingComments;\n } else if (lastElement.trailingComments !== undefined) {\n lastElement.trailingComments = [];\n }\n }\n\n processComment(node: Node): void {\n if (node.type === \"Program\" && node.body.length > 0) return;\n\n const stack = this.state.commentStack;\n\n let firstChild, lastChild, trailingComments, i, j;\n\n if (this.state.trailingComments.length > 0) {\n // If the first comment in trailingComments comes after the\n // current node, then we're good - all comments in the array will\n // come after the node and so it's safe to add them as official\n // trailingComments.\n if (this.state.trailingComments[0].start >= node.end) {\n trailingComments = this.state.trailingComments;\n this.state.trailingComments = [];\n } else {\n // Otherwise, if the first comment doesn't come after the\n // current node, that means we have a mix of leading and trailing\n // comments in the array and that leadingComments contains the\n // same items as trailingComments. Reset trailingComments to\n // zero items and we'll handle this by evaluating leadingComments\n // later.\n this.state.trailingComments.length = 0;\n }\n } else if (stack.length > 0) {\n const lastInStack = last(stack);\n if (\n lastInStack.trailingComments &&\n lastInStack.trailingComments[0].start >= node.end\n ) {\n trailingComments = lastInStack.trailingComments;\n delete lastInStack.trailingComments;\n }\n }\n\n // Eating the stack.\n if (stack.length > 0 && last(stack).start >= node.start) {\n firstChild = stack.pop();\n }\n\n while (stack.length > 0 && last(stack).start >= node.start) {\n lastChild = stack.pop();\n }\n\n if (!lastChild && firstChild) lastChild = firstChild;\n\n // Adjust comments that follow a trailing comma on the last element in a\n // comma separated list of nodes to be the trailing comments on the last\n // element\n if (firstChild) {\n switch (node.type) {\n case \"ObjectExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.properties);\n break;\n case \"ObjectPattern\":\n this.adjustCommentsAfterTrailingComma(node, node.properties, true);\n break;\n case \"CallExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.arguments);\n break;\n case \"ArrayExpression\":\n this.adjustCommentsAfterTrailingComma(node, node.elements);\n break;\n case \"ArrayPattern\":\n this.adjustCommentsAfterTrailingComma(node, node.elements, true);\n break;\n }\n } else if (\n this.state.commentPreviousNode &&\n ((this.state.commentPreviousNode.type === \"ImportSpecifier\" &&\n node.type !== \"ImportSpecifier\") ||\n (this.state.commentPreviousNode.type === \"ExportSpecifier\" &&\n node.type !== \"ExportSpecifier\"))\n ) {\n this.adjustCommentsAfterTrailingComma(\n node,\n [this.state.commentPreviousNode],\n true,\n );\n }\n\n if (lastChild) {\n if (lastChild.leadingComments) {\n if (\n lastChild !== node &&\n lastChild.leadingComments.length > 0 &&\n last(lastChild.leadingComments).end <= node.start\n ) {\n node.leadingComments = lastChild.leadingComments;\n delete lastChild.leadingComments;\n } else {\n // A leading comment for an anonymous class had been stolen by its first ClassMethod,\n // so this takes back the leading comment.\n // See also: https://github.com/eslint/espree/issues/158\n for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {\n if (lastChild.leadingComments[i].end <= node.start) {\n node.leadingComments = lastChild.leadingComments.splice(0, i + 1);\n break;\n }\n }\n }\n }\n } else if (this.state.leadingComments.length > 0) {\n if (last(this.state.leadingComments).end <= node.start) {\n if (this.state.commentPreviousNode) {\n for (j = 0; j < this.state.leadingComments.length; j++) {\n if (\n this.state.leadingComments[j].end <\n this.state.commentPreviousNode.end\n ) {\n this.state.leadingComments.splice(j, 1);\n j--;\n }\n }\n }\n if (this.state.leadingComments.length > 0) {\n node.leadingComments = this.state.leadingComments;\n this.state.leadingComments = [];\n }\n } else {\n // https://github.com/eslint/espree/issues/2\n //\n // In special cases, such as return (without a value) and\n // debugger, all comments will end up as leadingComments and\n // will otherwise be eliminated. This step runs when the\n // commentStack is empty and there are comments left\n // in leadingComments.\n //\n // This loop figures out the stopping point between the actual\n // leading and trailing comments by finding the location of the\n // first comment that comes after the given node.\n for (i = 0; i < this.state.leadingComments.length; i++) {\n if (this.state.leadingComments[i].end > node.start) {\n break;\n }\n }\n\n // Split the array based on the location of the first comment\n // that comes after the node. Keep in mind that this could\n // result in an empty array, and if so, the array must be\n // deleted.\n const leadingComments = this.state.leadingComments.slice(0, i);\n\n if (leadingComments.length) {\n node.leadingComments = leadingComments;\n }\n\n // Similarly, trailing comments are attached later. The variable\n // must be reset to null if there are no trailing comments.\n trailingComments = this.state.leadingComments.slice(i);\n if (trailingComments.length === 0) {\n trailingComments = null;\n }\n }\n }\n\n this.state.commentPreviousNode = node;\n\n if (trailingComments) {\n if (\n trailingComments.length &&\n trailingComments[0].start >= node.start &&\n last(trailingComments).end <= node.end\n ) {\n node.innerComments = trailingComments;\n } else {\n node.trailingComments = trailingComments;\n }\n }\n\n stack.push(node);\n }\n}\n","// @flow\n\nimport { getLineInfo, type Position } from \"../util/location\";\nimport CommentsParser from \"./comments\";\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\nexport default class LocationParser extends CommentsParser {\n +isLookahead: boolean;\n\n getLocationForPosition(pos: number): Position {\n let loc;\n if (pos === this.state.start) loc = this.state.startLoc;\n else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;\n else if (pos === this.state.end) loc = this.state.endLoc;\n else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;\n else loc = getLineInfo(this.input, pos);\n\n return loc;\n }\n\n raise(\n pos: number,\n message: string,\n {\n missingPluginNames,\n code,\n }: {\n missingPluginNames?: Array<string>,\n code?: string,\n } = {},\n ): Error | empty {\n const loc = this.getLocationForPosition(pos);\n\n message += ` (${loc.line}:${loc.column})`;\n // $FlowIgnore\n const err: SyntaxError & { pos: number, loc: Position } = new SyntaxError(\n message,\n );\n err.pos = pos;\n err.loc = loc;\n if (missingPluginNames) {\n err.missingPlugin = missingPluginNames;\n }\n if (code !== undefined) {\n err.code = code;\n }\n\n if (this.options.errorRecovery) {\n if (!this.isLookahead) this.state.errors.push(err);\n return err;\n } else {\n throw err;\n }\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport * as N from \"../types\";\nimport { Position } from \"../util/location\";\n\nimport { types as ct, type TokContext } from \"./context\";\nimport type { Token } from \"./index\";\nimport { types as tt, type TokenType } from \"./types\";\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number,\n\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0,\n};\n\nexport default class State {\n strict: boolean;\n curLine: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc: Position;\n endLoc: Position;\n\n init(options: Options): void {\n this.strict =\n options.strictMode === false ? false : options.sourceType === \"module\";\n\n this.curLine = options.startLine;\n this.startLoc = this.endLoc = this.curPosition();\n }\n\n errors: SyntaxError[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n inParameters: boolean = false;\n maybeInArrowParameters: boolean = false;\n inPipeline: boolean = false;\n inType: boolean = false;\n noAnonFunctionType: boolean = false;\n inPropertyName: boolean = false;\n inClassProperty: boolean = false;\n hasFlowComment: boolean = false;\n isIterator: boolean = false;\n\n // For the smartPipelines plugin:\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F# plugin\n soloAwait: boolean = false;\n inFSharpPipelineDirectBody: boolean = false;\n\n // Check whether we are in a (nested) class or not.\n classLevel: number = 0;\n\n // Labels in scope.\n labels: Array<{\n kind: ?(\"loop\" | \"switch\"),\n name?: ?string,\n statementStart?: number,\n }> = [];\n\n // Leading decorators. Last element of the stack represents the decorators in current context.\n // Supports nesting of decorators, e.g. @foo(@bar class inner {}) class outer {}\n // where @foo belongs to the outer class and @bar to the inner\n decoratorStack: Array<Array<N.Decorator>> = [[]];\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n yieldPos: number = -1;\n awaitPos: number = -1;\n\n // Token store.\n tokens: Array<Token | N.Comment> = [];\n\n // Comment store.\n comments: Array<N.Comment> = [];\n\n // Comment attachment store\n trailingComments: Array<N.Comment> = [];\n leadingComments: Array<N.Comment> = [];\n commentStack: Array<{\n start: number,\n leadingComments: ?Array<N.Comment>,\n trailingComments: ?Array<N.Comment>,\n type: string,\n }> = [];\n // $FlowIgnore this is initialized when the parser starts.\n commentPreviousNode: N.Node = null;\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n lineStart: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // $FlowIgnore this is initialized when generating the second token.\n lastTokEndLoc: Position = null;\n // $FlowIgnore this is initialized when generating the second token.\n lastTokStartLoc: Position = null;\n lastTokStart: number = 0;\n lastTokEnd: number = 0;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n context: Array<TokContext> = [ct.braceStatement];\n exprAllowed: boolean = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n containsEsc: boolean = false;\n\n // TODO\n containsOctal: boolean = false;\n octalPosition: ?number = null;\n\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n exportedIdentifiers: Array<string> = [];\n\n invalidTemplateEscapePosition: ?number = null;\n\n curPosition(): Position {\n return new Position(this.curLine, this.pos - this.lineStart);\n }\n\n clone(skipArrays?: boolean): State {\n const state = new State();\n const keys = Object.keys(this);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n // $FlowIgnore\n let val = this[key];\n\n if (!skipArrays && Array.isArray(val)) {\n val = val.slice();\n }\n\n // $FlowIgnore\n state[key] = val;\n }\n\n return state;\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport type { Position } from \"../util/location\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier\";\nimport { types as tt, keywords as keywordTypes, type TokenType } from \"./types\";\nimport { type TokContext, types as ct } from \"./context\";\nimport LocationParser from \"../parser/location\";\nimport { SourceLocation } from \"../util/location\";\nimport {\n lineBreak,\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n} from \"../util/whitespace\";\nimport State from \"./state\";\n\nconst VALID_REGEX_FLAGS = new Set([\"g\", \"m\", \"s\", \"i\", \"y\", \"u\"]);\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\n\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: [\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ],\n hex: [\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ],\n};\n\nconst allowedNumericSeparatorSiblings = {};\nallowedNumericSeparatorSiblings.bin = [\n // 0 - 1\n charCodes.digit0,\n charCodes.digit1,\n];\nallowedNumericSeparatorSiblings.oct = [\n // 0 - 7\n ...allowedNumericSeparatorSiblings.bin,\n\n charCodes.digit2,\n charCodes.digit3,\n charCodes.digit4,\n charCodes.digit5,\n charCodes.digit6,\n charCodes.digit7,\n];\nallowedNumericSeparatorSiblings.dec = [\n // 0 - 9\n ...allowedNumericSeparatorSiblings.oct,\n\n charCodes.digit8,\n charCodes.digit9,\n];\n\nallowedNumericSeparatorSiblings.hex = [\n // 0 - 9, A - F, a - f,\n ...allowedNumericSeparatorSiblings.dec,\n\n charCodes.uppercaseA,\n charCodes.uppercaseB,\n charCodes.uppercaseC,\n charCodes.uppercaseD,\n charCodes.uppercaseE,\n charCodes.uppercaseF,\n\n charCodes.lowercaseA,\n charCodes.lowercaseB,\n charCodes.lowercaseC,\n charCodes.lowercaseD,\n charCodes.lowercaseE,\n charCodes.lowercaseF,\n];\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n this.type = state.type;\n this.value = state.value;\n this.start = state.start;\n this.end = state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n type: TokenType;\n value: any;\n start: number;\n end: number;\n loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default class Tokenizer extends LocationParser {\n // Forward-declarations\n // parser/util.js\n +unexpected: (pos?: ?number, messageOrType?: string | TokenType) => empty;\n\n isLookahead: boolean;\n\n constructor(options: Options, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.isLookahead = false;\n }\n\n // Move to the next token\n\n next(): void {\n if (!this.isLookahead) {\n this.checkKeywordEscapes();\n if (this.options.tokens) {\n this.state.tokens.push(new Token(this.state));\n }\n }\n\n this.state.lastTokEnd = this.state.end;\n this.state.lastTokStart = this.state.start;\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n // TODO\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n // TODO\n\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n // TODO\n\n lookahead(): State {\n const old = this.state;\n this.state = old.clone(true);\n\n this.isLookahead = true;\n this.next();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n const thisTokEnd = this.state.pos;\n skipWhiteSpace.lastIndex = thisTokEnd;\n const skip = skipWhiteSpace.exec(this.input);\n // $FlowIgnore: The skipWhiteSpace ensures to match any string\n return thisTokEnd + skip[0].length;\n }\n\n lookaheadCharCode(): number {\n return this.input.charCodeAt(this.nextTokenStart());\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (!this.match(tt.num) && !this.match(tt.string)) return;\n this.state.pos = this.state.start;\n while (this.state.pos < this.state.lineStart) {\n this.state.lineStart =\n this.input.lastIndexOf(\"\\n\", this.state.lineStart - 2) + 1;\n --this.state.curLine;\n }\n this.nextToken();\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related\n // properties.\n\n nextToken(): void {\n const curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) this.skipSpace();\n\n this.state.containsOctal = false;\n this.state.octalPosition = null;\n this.state.start = this.state.pos;\n this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n if (curContext.override) {\n curContext.override(this);\n } else {\n this.getTokenFromCode(this.input.codePointAt(this.state.pos));\n }\n }\n\n pushComment(\n block: boolean,\n text: string,\n start: number,\n end: number,\n startLoc: Position,\n endLoc: Position,\n ): void {\n const comment = {\n type: block ? \"CommentBlock\" : \"CommentLine\",\n value: text,\n start: start,\n end: end,\n loc: new SourceLocation(startLoc, endLoc),\n };\n\n if (this.options.tokens) this.state.tokens.push(comment);\n this.state.comments.push(comment);\n this.addComment(comment);\n }\n\n skipBlockComment(): void {\n const startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(\"*/\", this.state.pos + 2);\n if (end === -1) throw this.raise(start, \"Unterminated comment\");\n\n this.state.pos = end + 2;\n lineBreakG.lastIndex = start;\n let match;\n while (\n (match = lineBreakG.exec(this.input)) &&\n match.index < this.state.pos\n ) {\n ++this.state.curLine;\n this.state.lineStart = match.index + match[0].length;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n this.pushComment(\n true,\n this.input.slice(start + 2, end),\n start,\n this.state.pos,\n startLoc,\n this.state.curPosition(),\n );\n }\n\n skipLineComment(startSkip: number): void {\n const start = this.state.pos;\n const startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n this.pushComment(\n false,\n this.input.slice(start + startSkip, this.state.pos),\n start,\n this.state.pos,\n startLoc,\n this.state.curPosition(),\n );\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk:\n this.skipBlockComment();\n break;\n\n case charCodes.slash:\n this.skipLineComment(2);\n break;\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else {\n break loop;\n }\n }\n }\n }\n\n // Called at the end of every token. Sets `end`, `val`, and\n // maintains `context` and `exprAllowed`, and skips the space after\n // the token, so that the next one's `start` will point at the\n // right position.\n\n finishToken(type: TokenType, val: any): void {\n this.state.end = this.state.pos;\n this.state.endLoc = this.state.curPosition();\n const prevType = this.state.type;\n this.state.type = type;\n this.state.value = val;\n\n if (!this.isLookahead) this.updateContext(prevType);\n }\n\n // ### Token reading\n\n // This is the function that is called to fetch the next token. It\n // is somewhat obscure, because it works in character codes rather\n // than characters, and because operator parsing has been inlined\n // into it.\n //\n // All in the name of speed.\n\n // number sign is \"#\"\n readToken_numberSign(): void {\n if (this.state.pos === 0 && this.readToken_interpreter()) {\n return;\n }\n\n const nextPos = this.state.pos + 1;\n const next = this.input.charCodeAt(nextPos);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n throw this.raise(this.state.pos, \"Unexpected digit after hash token\");\n }\n\n if (\n (this.hasPlugin(\"classPrivateProperties\") ||\n this.hasPlugin(\"classPrivateMethods\")) &&\n this.state.classLevel > 0\n ) {\n ++this.state.pos;\n this.finishToken(tt.hash);\n return;\n } else if (\n this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\"\n ) {\n this.finishOp(tt.hash, 1);\n } else {\n throw this.raise(this.state.pos, \"Unexpected character '#'\");\n }\n }\n\n readToken_dot(): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n this.readNumber(true);\n return;\n }\n\n if (\n next === charCodes.dot &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n ) {\n this.state.pos += 3;\n this.finishToken(tt.ellipsis);\n } else {\n ++this.state.pos;\n this.finishToken(tt.dot);\n }\n }\n\n readToken_slash(): void {\n // '/'\n if (this.state.exprAllowed && !this.state.inType) {\n ++this.state.pos;\n this.readRegexp();\n return;\n }\n\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.slash, 1);\n }\n }\n\n readToken_interpreter(): boolean {\n if (this.state.pos !== 0 || this.length < 2) return false;\n\n const start = this.state.pos;\n this.state.pos += 1;\n\n let ch = this.input.charCodeAt(this.state.pos);\n if (ch !== charCodes.exclamationMark) return false;\n\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n\n const value = this.input.slice(start + 2, this.state.pos);\n\n this.finishToken(tt.interpreterDirective, value);\n\n return true;\n }\n\n readToken_mult_modulo(code: number): void {\n // '%*'\n let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n let width = 1;\n let next = this.input.charCodeAt(this.state.pos + 1);\n const exprAllowed = this.state.exprAllowed;\n\n // Exponentiation operator **\n if (code === charCodes.asterisk && next === charCodes.asterisk) {\n width++;\n next = this.input.charCodeAt(this.state.pos + 2);\n type = tt.exponent;\n }\n\n if (next === charCodes.equalsTo && !exprAllowed) {\n width++;\n type = tt.assign;\n }\n\n this.finishOp(type, width);\n }\n\n readToken_pipe_amp(code: number): void {\n // '||' '&&' '||=' '&&='\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n this.finishOp(tt.assign, 3);\n } else {\n this.finishOp(\n code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n 2,\n );\n }\n return;\n }\n\n if (code === charCodes.verticalBar) {\n // '|>'\n if (next === charCodes.greaterThan) {\n this.finishOp(tt.pipeline, 2);\n return;\n }\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n return;\n }\n\n this.finishOp(\n code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n 1,\n );\n }\n\n readToken_caret(): void {\n // '^'\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.bitwiseXOR, 1);\n }\n }\n\n readToken_plus_min(code: number): void {\n // '+-'\n const next = this.input.charCodeAt(this.state.pos + 1);\n\n if (next === code) {\n if (\n next === charCodes.dash &&\n !this.inModule &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan &&\n (this.state.lastTokEnd === 0 ||\n lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.pos),\n ))\n ) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n this.nextToken();\n return;\n }\n this.finishOp(tt.incDec, 2);\n return;\n }\n\n if (next === charCodes.equalsTo) {\n this.finishOp(tt.assign, 2);\n } else {\n this.finishOp(tt.plusMin, 1);\n }\n }\n\n readToken_lt_gt(code: number): void {\n // '<>'\n const next = this.input.charCodeAt(this.state.pos + 1);\n let size = 1;\n\n if (next === code) {\n size =\n code === charCodes.greaterThan &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan\n ? 3\n : 2;\n if (this.input.charCodeAt(this.state.pos + size) === charCodes.equalsTo) {\n this.finishOp(tt.assign, size + 1);\n return;\n }\n this.finishOp(tt.bitShift, size);\n return;\n }\n\n if (\n next === charCodes.exclamationMark &&\n code === charCodes.lessThan &&\n !this.inModule &&\n this.input.charCodeAt(this.state.pos + 2) === charCodes.dash &&\n this.input.charCodeAt(this.state.pos + 3) === charCodes.dash\n ) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n this.nextToken();\n return;\n }\n\n if (next === charCodes.equalsTo) {\n // <= | >=\n size = 2;\n }\n\n this.finishOp(tt.relational, size);\n }\n\n readToken_eq_excl(code: number): void {\n // '=!'\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (next === charCodes.equalsTo) {\n this.finishOp(\n tt.equality,\n this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n ? 3\n : 2,\n );\n return;\n }\n if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n // '=>'\n this.state.pos += 2;\n this.finishToken(tt.arrow);\n return;\n }\n this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n }\n\n readToken_question(): void {\n // '?'\n const next = this.input.charCodeAt(this.state.pos + 1);\n const next2 = this.input.charCodeAt(this.state.pos + 2);\n if (next === charCodes.questionMark && !this.state.inType) {\n if (next2 === charCodes.equalsTo) {\n // '??='\n this.finishOp(tt.assign, 3);\n } else {\n // '??'\n this.finishOp(tt.nullishCoalescing, 2);\n }\n } else if (\n next === charCodes.dot &&\n !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n ) {\n // '.' not followed by a number\n this.state.pos += 2;\n this.finishToken(tt.questionDot);\n } else {\n ++this.state.pos;\n this.finishToken(tt.question);\n }\n }\n\n getTokenFromCode(code: number): void {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case charCodes.dot:\n this.readToken_dot();\n return;\n\n // Punctuation tokens.\n case charCodes.leftParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenL);\n return;\n case charCodes.rightParenthesis:\n ++this.state.pos;\n this.finishToken(tt.parenR);\n return;\n case charCodes.semicolon:\n ++this.state.pos;\n this.finishToken(tt.semi);\n return;\n case charCodes.comma:\n ++this.state.pos;\n this.finishToken(tt.comma);\n return;\n case charCodes.leftSquareBracket:\n ++this.state.pos;\n this.finishToken(tt.bracketL);\n return;\n case charCodes.rightSquareBracket:\n ++this.state.pos;\n this.finishToken(tt.bracketR);\n return;\n case charCodes.leftCurlyBrace:\n ++this.state.pos;\n this.finishToken(tt.braceL);\n return;\n case charCodes.rightCurlyBrace:\n ++this.state.pos;\n this.finishToken(tt.braceR);\n return;\n\n case charCodes.colon:\n if (\n this.hasPlugin(\"functionBind\") &&\n this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n ) {\n this.finishOp(tt.doubleColon, 2);\n } else {\n ++this.state.pos;\n this.finishToken(tt.colon);\n }\n return;\n\n case charCodes.questionMark:\n this.readToken_question();\n return;\n\n case charCodes.graveAccent:\n ++this.state.pos;\n this.finishToken(tt.backQuote);\n return;\n\n case charCodes.digit0: {\n const next = this.input.charCodeAt(this.state.pos + 1);\n // '0x', '0X' - hex number\n if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n this.readRadixNumber(16);\n return;\n }\n // '0o', '0O' - octal number\n if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n this.readRadixNumber(8);\n return;\n }\n // '0b', '0B' - binary number\n if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n this.readRadixNumber(2);\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case charCodes.digit1:\n case charCodes.digit2:\n case charCodes.digit3:\n case charCodes.digit4:\n case charCodes.digit5:\n case charCodes.digit6:\n case charCodes.digit7:\n case charCodes.digit8:\n case charCodes.digit9:\n this.readNumber(false);\n return;\n\n // Quotes produce strings.\n case charCodes.quotationMark:\n case charCodes.apostrophe:\n this.readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case charCodes.slash:\n this.readToken_slash();\n return;\n\n case charCodes.percentSign:\n case charCodes.asterisk:\n this.readToken_mult_modulo(code);\n return;\n\n case charCodes.verticalBar:\n case charCodes.ampersand:\n this.readToken_pipe_amp(code);\n return;\n\n case charCodes.caret:\n this.readToken_caret();\n return;\n\n case charCodes.plusSign:\n case charCodes.dash:\n this.readToken_plus_min(code);\n return;\n\n case charCodes.lessThan:\n case charCodes.greaterThan:\n this.readToken_lt_gt(code);\n return;\n\n case charCodes.equalsTo:\n case charCodes.exclamationMark:\n this.readToken_eq_excl(code);\n return;\n\n case charCodes.tilde:\n this.finishOp(tt.tilde, 1);\n return;\n\n case charCodes.atSign:\n ++this.state.pos;\n this.finishToken(tt.at);\n return;\n\n case charCodes.numberSign:\n this.readToken_numberSign();\n return;\n\n case charCodes.backslash:\n this.readWord();\n return;\n\n default:\n if (isIdentifierStart(code)) {\n this.readWord();\n return;\n }\n }\n\n throw this.raise(\n this.state.pos,\n `Unexpected character '${String.fromCodePoint(code)}'`,\n );\n }\n\n finishOp(type: TokenType, size: number): void {\n const str = this.input.slice(this.state.pos, this.state.pos + size);\n this.state.pos += size;\n this.finishToken(type, str);\n }\n\n readRegexp(): void {\n const start = this.state.pos;\n let escaped, inClass;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(start, \"Unterminated regular expression\");\n }\n const ch = this.input.charAt(this.state.pos);\n if (lineBreak.test(ch)) {\n throw this.raise(start, \"Unterminated regular expression\");\n }\n if (escaped) {\n escaped = false;\n } else {\n if (ch === \"[\") {\n inClass = true;\n } else if (ch === \"]\" && inClass) {\n inClass = false;\n } else if (ch === \"/\" && !inClass) {\n break;\n }\n escaped = ch === \"\\\\\";\n }\n ++this.state.pos;\n }\n const content = this.input.slice(start, this.state.pos);\n ++this.state.pos;\n\n let mods = \"\";\n\n while (this.state.pos < this.length) {\n const char = this.input[this.state.pos];\n const charCode = this.input.codePointAt(this.state.pos);\n\n if (VALID_REGEX_FLAGS.has(char)) {\n if (mods.indexOf(char) > -1) {\n this.raise(this.state.pos + 1, \"Duplicate regular expression flag\");\n }\n } else if (\n isIdentifierChar(charCode) ||\n charCode === charCodes.backslash\n ) {\n this.raise(this.state.pos + 1, \"Invalid regular expression flag\");\n } else {\n break;\n }\n\n ++this.state.pos;\n mods += char;\n }\n\n this.finishToken(tt.regexp, {\n pattern: content,\n flags: mods,\n });\n }\n\n // Read an integer in the given radix. Return null if zero digits\n // were read, the integer value otherwise. When `len` is given, this\n // will return `null` unless the integer has exactly `len` digits.\n // When `forceLen` is `true`, it means that we already know that in case\n // of a malformed number we have to skip `len` characters anyway, instead\n // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n // characters (and thus the closing quote).\n\n readInt(\n radix: number,\n len?: number,\n forceLen?: boolean,\n allowNumSeparator: boolean = true,\n ): number | null {\n const start = this.state.pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const allowedSiblings =\n radix === 16\n ? allowedNumericSeparatorSiblings.hex\n : radix === 10\n ? allowedNumericSeparatorSiblings.dec\n : radix === 8\n ? allowedNumericSeparatorSiblings.oct\n : allowedNumericSeparatorSiblings.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = this.input.charCodeAt(this.state.pos);\n let val;\n\n if (this.hasPlugin(\"numericSeparator\")) {\n if (code === charCodes.underscore) {\n const prev = this.input.charCodeAt(this.state.pos - 1);\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (allowedSiblings.indexOf(next) === -1) {\n this.raise(\n this.state.pos,\n \"A numeric separator is only allowed between two digits\",\n );\n } else if (\n forbiddenSiblings.indexOf(prev) > -1 ||\n forbiddenSiblings.indexOf(next) > -1 ||\n Number.isNaN(next)\n ) {\n this.raise(\n this.state.pos,\n \"A numeric separator is only allowed between two digits\",\n );\n }\n\n if (!allowNumSeparator) {\n this.raise(\n this.state.pos,\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences\",\n );\n }\n\n // Ignore this _ character\n ++this.state.pos;\n continue;\n }\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we are in \"errorRecovery\" mode and we found a digit which is too big,\n // don't break the loop.\n\n if (this.options.errorRecovery && val <= 9) {\n val = 0;\n this.raise(\n this.state.start + i + 2,\n \"Expected number in radix \" + radix,\n );\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++this.state.pos;\n total = total * radix + val;\n }\n if (\n this.state.pos === start ||\n (len != null && this.state.pos - start !== len) ||\n invalid\n ) {\n return null;\n }\n\n return total;\n }\n\n readRadixNumber(radix: number): void {\n const start = this.state.pos;\n let isBigInt = false;\n\n this.state.pos += 2; // 0x\n const val = this.readInt(radix);\n if (val == null) {\n this.raise(this.state.start + 2, \"Expected number in radix \" + radix);\n }\n\n if (this.hasPlugin(\"bigInt\")) {\n if (this.input.charCodeAt(this.state.pos) === charCodes.lowercaseN) {\n ++this.state.pos;\n isBigInt = true;\n }\n }\n\n if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {\n throw this.raise(this.state.pos, \"Identifier directly after number\");\n }\n\n if (isBigInt) {\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n this.finishToken(tt.bigint, str);\n return;\n }\n\n this.finishToken(tt.num, val);\n }\n\n // Read an integer, octal integer, or floating-point number.\n\n readNumber(startsWithDot: boolean): void {\n const start = this.state.pos;\n let isFloat = false;\n let isBigInt = false;\n let isNonOctalDecimalInt = false;\n\n if (!startsWithDot && this.readInt(10) === null) {\n this.raise(start, \"Invalid number\");\n }\n let octal =\n this.state.pos - start >= 2 &&\n this.input.charCodeAt(start) === charCodes.digit0;\n if (octal) {\n if (this.state.strict) {\n this.raise(\n start,\n \"Legacy octal literals are not allowed in strict mode\",\n );\n }\n if (/[89]/.test(this.input.slice(start, this.state.pos))) {\n octal = false;\n isNonOctalDecimalInt = true;\n }\n }\n\n let next = this.input.charCodeAt(this.state.pos);\n if (next === charCodes.dot && !octal) {\n ++this.state.pos;\n this.readInt(10);\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n if (\n (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n !octal\n ) {\n next = this.input.charCodeAt(++this.state.pos);\n if (next === charCodes.plusSign || next === charCodes.dash) {\n ++this.state.pos;\n }\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\");\n isFloat = true;\n next = this.input.charCodeAt(this.state.pos);\n }\n\n // disallow numeric separators in non octal decimals and legacy octal likes\n if (this.hasPlugin(\"numericSeparator\") && (octal || isNonOctalDecimalInt)) {\n const underscorePos = this.input\n .slice(start, this.state.pos)\n .indexOf(\"_\");\n if (underscorePos > 0) {\n this.raise(\n underscorePos + start,\n \"Numeric separator can not be used after leading 0\",\n );\n }\n }\n\n if (this.hasPlugin(\"bigInt\")) {\n if (next === charCodes.lowercaseN) {\n // disallow floats, legacy octal syntax and non octal decimals\n // new style octal (\"0o\") is handled in this.readRadixNumber\n if (isFloat || octal || isNonOctalDecimalInt) {\n this.raise(start, \"Invalid BigIntLiteral\");\n }\n ++this.state.pos;\n isBigInt = true;\n }\n }\n\n if (isIdentifierStart(this.input.codePointAt(this.state.pos))) {\n throw this.raise(this.state.pos, \"Identifier directly after number\");\n }\n\n // remove \"_\" for numeric literal separator, and \"n\" for BigInts\n const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n\n if (isBigInt) {\n this.finishToken(tt.bigint, str);\n return;\n }\n\n const val = octal ? parseInt(str, 8) : parseFloat(str);\n this.finishToken(tt.num, val);\n }\n\n // Read a string value, interpreting backslash-escapes.\n\n readCodePoint(throwOnInvalid: boolean): number | null {\n const ch = this.input.charCodeAt(this.state.pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n const codePos = ++this.state.pos;\n code = this.readHexChar(\n this.input.indexOf(\"}\", this.state.pos) - this.state.pos,\n true,\n throwOnInvalid,\n );\n ++this.state.pos;\n if (code === null) {\n // $FlowFixMe (is this always non-null?)\n --this.state.invalidTemplateEscapePosition; // to point to the '\\'' instead of the 'u'\n } else if (code > 0x10ffff) {\n if (throwOnInvalid) {\n this.raise(codePos, \"Code point out of bounds\");\n } else {\n this.state.invalidTemplateEscapePosition = codePos - 2;\n return null;\n }\n }\n } else {\n code = this.readHexChar(4, false, throwOnInvalid);\n }\n return code;\n }\n\n readString(quote: number): void {\n let out = \"\",\n chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.backslash) {\n out += this.input.slice(chunkStart, this.state.pos);\n // $FlowFixMe\n out += this.readEscapedChar(false);\n chunkStart = this.state.pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++this.state.pos;\n ++this.state.curLine;\n } else if (isNewLine(ch)) {\n throw this.raise(this.state.start, \"Unterminated string constant\");\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(tt.string, out);\n }\n\n // Reads template string tokens.\n\n readTmplToken(): void {\n let out = \"\",\n chunkStart = this.state.pos,\n containsInvalid = false;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(this.state.start, \"Unterminated template\");\n }\n const ch = this.input.charCodeAt(this.state.pos);\n if (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n this.input.charCodeAt(this.state.pos + 1) ===\n charCodes.leftCurlyBrace)\n ) {\n if (this.state.pos === this.state.start && this.match(tt.template)) {\n if (ch === charCodes.dollarSign) {\n this.state.pos += 2;\n this.finishToken(tt.dollarBraceL);\n return;\n } else {\n ++this.state.pos;\n this.finishToken(tt.backQuote);\n return;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(tt.template, containsInvalid ? null : out);\n return;\n }\n if (ch === charCodes.backslash) {\n out += this.input.slice(chunkStart, this.state.pos);\n const escaped = this.readEscapedChar(true);\n if (escaped === null) {\n containsInvalid = true;\n } else {\n out += escaped;\n }\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n ++this.state.pos;\n switch (ch) {\n case charCodes.carriageReturn:\n if (this.input.charCodeAt(this.state.pos) === charCodes.lineFeed) {\n ++this.state.pos;\n }\n case charCodes.lineFeed:\n out += \"\\n\";\n break;\n default:\n out += String.fromCharCode(ch);\n break;\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n\n // Used to read escaped characters\n\n readEscapedChar(inTemplate: boolean): string | null {\n const throwOnInvalid = !inTemplate;\n const ch = this.input.charCodeAt(++this.state.pos);\n ++this.state.pos;\n switch (ch) {\n case charCodes.lowercaseN:\n return \"\\n\";\n case charCodes.lowercaseR:\n return \"\\r\";\n case charCodes.lowercaseX: {\n const code = this.readHexChar(2, false, throwOnInvalid);\n return code === null ? null : String.fromCharCode(code);\n }\n case charCodes.lowercaseU: {\n const code = this.readCodePoint(throwOnInvalid);\n return code === null ? null : String.fromCodePoint(code);\n }\n case charCodes.lowercaseT:\n return \"\\t\";\n case charCodes.lowercaseB:\n return \"\\b\";\n case charCodes.lowercaseV:\n return \"\\u000b\";\n case charCodes.lowercaseF:\n return \"\\f\";\n case charCodes.carriageReturn:\n if (this.input.charCodeAt(this.state.pos) === charCodes.lineFeed) {\n ++this.state.pos;\n }\n case charCodes.lineFeed:\n this.state.lineStart = this.state.pos;\n ++this.state.curLine;\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return \"\";\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n const codePos = this.state.pos - 1;\n\n this.state.invalidTemplateEscapePosition = codePos;\n return null;\n }\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const codePos = this.state.pos - 1;\n // $FlowFixMe\n let octalStr = this.input\n .substr(this.state.pos - 1, 3)\n .match(/^[0-7]+/)[0];\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.state.pos += octalStr.length - 1;\n const next = this.input.charCodeAt(this.state.pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n this.state.invalidTemplateEscapePosition = codePos;\n return null;\n } else if (this.state.strict) {\n this.raise(codePos, \"Octal literal in strict mode\");\n } else if (!this.state.containsOctal) {\n // These properties are only used to throw an error for an octal which occurs\n // in a directive which occurs prior to a \"use strict\" directive.\n this.state.containsOctal = true;\n this.state.octalPosition = codePos;\n }\n }\n\n return String.fromCharCode(octal);\n }\n\n return String.fromCharCode(ch);\n }\n }\n\n // Used to read character escape sequences ('\\x', '\\u').\n\n readHexChar(\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n ): number | null {\n const codePos = this.state.pos;\n const n = this.readInt(16, len, forceLen, false);\n if (n === null) {\n if (throwOnInvalid) {\n this.raise(codePos, \"Bad character escape sequence\");\n } else {\n this.state.pos = codePos - 1;\n this.state.invalidTemplateEscapePosition = codePos - 1;\n }\n }\n return n;\n }\n\n // Read an identifier, and return it as a string. Sets `this.state.containsEsc`\n // to whether the word contained a '\\u' escape.\n //\n // Incrementally adds only escaped chars, adding other chunks as-is\n // as a micro-optimization.\n\n readWord1(): string {\n let word = \"\";\n this.state.containsEsc = false;\n const start = this.state.pos;\n let chunkStart = this.state.pos;\n\n while (this.state.pos < this.length) {\n const ch = this.input.codePointAt(this.state.pos);\n if (isIdentifierChar(ch)) {\n this.state.pos += ch <= 0xffff ? 1 : 2;\n } else if (this.state.isIterator && ch === charCodes.atSign) {\n ++this.state.pos;\n } else if (ch === charCodes.backslash) {\n this.state.containsEsc = true;\n\n word += this.input.slice(chunkStart, this.state.pos);\n const escStart = this.state.pos;\n const identifierCheck =\n this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n this.raise(\n this.state.pos,\n \"Expecting Unicode escape sequence \\\\uXXXX\",\n );\n continue;\n }\n\n ++this.state.pos;\n const esc = this.readCodePoint(true);\n if (esc !== null) {\n if (!identifierCheck(esc)) {\n this.raise(escStart, \"Invalid Unicode escape\");\n }\n\n word += String.fromCodePoint(esc);\n }\n chunkStart = this.state.pos;\n } else {\n break;\n }\n }\n return word + this.input.slice(chunkStart, this.state.pos);\n }\n\n isIterator(word: string): boolean {\n return word === \"@@iterator\" || word === \"@@asyncIterator\";\n }\n\n // Read an identifier or keyword token. Will check for reserved\n // words when necessary.\n\n readWord(): void {\n const word = this.readWord1();\n const type = keywordTypes.get(word) || tt.name;\n\n // Allow @@iterator and @@asyncIterator as a identifier only inside type\n if (\n this.state.isIterator &&\n (!this.isIterator(word) || !this.state.inType)\n ) {\n this.raise(this.state.pos, `Invalid identifier ${word}`);\n }\n\n this.finishToken(type, word);\n }\n\n checkKeywordEscapes(): void {\n const kw = this.state.type.keyword;\n if (kw && this.state.containsEsc) {\n this.raise(this.state.start, `Escape sequence in keyword ${kw}`);\n }\n }\n\n braceIsBlock(prevType: TokenType): boolean {\n const parent = this.curContext();\n if (parent === ct.functionExpression || parent === ct.functionStatement) {\n return true;\n }\n if (\n prevType === tt.colon &&\n (parent === ct.braceStatement || parent === ct.braceExpression)\n ) {\n return !parent.isExpr;\n }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (\n prevType === tt._return ||\n (prevType === tt.name && this.state.exprAllowed)\n ) {\n return lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.start),\n );\n }\n\n if (\n prevType === tt._else ||\n prevType === tt.semi ||\n prevType === tt.eof ||\n prevType === tt.parenR ||\n prevType === tt.arrow\n ) {\n return true;\n }\n\n if (prevType === tt.braceL) {\n return parent === ct.braceStatement;\n }\n\n if (\n prevType === tt._var ||\n prevType === tt._const ||\n prevType === tt.name\n ) {\n return false;\n }\n\n if (prevType === tt.relational) {\n // `class C<T> { ... }`\n return true;\n }\n\n return !this.state.exprAllowed;\n }\n\n updateContext(prevType: TokenType): void {\n const type = this.state.type;\n let update;\n\n if (type.keyword && (prevType === tt.dot || prevType === tt.questionDot)) {\n this.state.exprAllowed = false;\n } else if ((update = type.updateContext)) {\n update.call(this, prevType);\n } else {\n this.state.exprAllowed = type.beforeExpr;\n }\n }\n}\n","// @flow\n\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport Tokenizer from \"../tokenizer\";\nimport State from \"../tokenizer/state\";\nimport type { Node } from \"../types\";\nimport { lineBreak, skipWhiteSpace } from \"../util/whitespace\";\nimport { isIdentifierChar } from \"../util/identifier\";\nimport * as charCodes from \"charcodes\";\n\nconst literal = /^('|\")((?:\\\\?.)*?)\\1/;\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n node: Node,\n error: Error,\n thrown: Thrown,\n aborted: Aborted,\n failState: FailState,\n};\n\n// ## Parser utilities\n\nexport default class UtilParser extends Tokenizer {\n // TODO\n\n addExtra(node: Node, key: string, val: any): void {\n if (!node) return;\n\n const extra = (node.extra = node.extra || {});\n extra[key] = val;\n }\n\n // TODO\n\n isRelational(op: \"<\" | \">\"): boolean {\n return this.match(tt.relational) && this.state.value === op;\n }\n\n isLookaheadRelational(op: \"<\" | \">\"): boolean {\n const next = this.nextTokenStart();\n if (this.input.charAt(next) === op) {\n if (next + 1 === this.input.length) {\n return true;\n }\n const afterNext = this.input.charCodeAt(next + 1);\n return afterNext !== op.charCodeAt(0) && afterNext !== charCodes.equalsTo;\n }\n return false;\n }\n\n // TODO\n\n expectRelational(op: \"<\" | \">\"): void {\n if (this.isRelational(op)) {\n this.next();\n } else {\n this.unexpected(null, tt.relational);\n }\n }\n\n // eat() for relational operators.\n\n eatRelational(op: \"<\" | \">\"): boolean {\n if (this.isRelational(op)) {\n this.next();\n return true;\n }\n return false;\n }\n\n // Tests whether parsed token is a contextual keyword.\n\n isContextual(name: string): boolean {\n return (\n this.match(tt.name) &&\n this.state.value === name &&\n !this.state.containsEsc\n );\n }\n\n isUnparsedContextual(nameStart: number, name: string): boolean {\n const nameEnd = nameStart + name.length;\n return (\n this.input.slice(nameStart, nameEnd) === name &&\n (nameEnd === this.input.length ||\n !isIdentifierChar(this.input.charCodeAt(nameEnd)))\n );\n }\n\n isLookaheadContextual(name: string): boolean {\n const next = this.nextTokenStart();\n return this.isUnparsedContextual(next, name);\n }\n\n // Consumes contextual keyword if possible.\n\n eatContextual(name: string): boolean {\n return this.isContextual(name) && this.eat(tt.name);\n }\n\n // Asserts that following token is given contextual keyword.\n\n expectContextual(name: string, message?: string): void {\n if (!this.eatContextual(name)) this.unexpected(null, message);\n }\n\n // Test whether a semicolon can be inserted at the current position.\n\n canInsertSemicolon(): boolean {\n return (\n this.match(tt.eof) ||\n this.match(tt.braceR) ||\n this.hasPrecedingLineBreak()\n );\n }\n\n hasPrecedingLineBreak(): boolean {\n return lineBreak.test(\n this.input.slice(this.state.lastTokEnd, this.state.start),\n );\n }\n\n // TODO\n\n isLineTerminator(): boolean {\n return this.eat(tt.semi) || this.canInsertSemicolon();\n }\n\n // Consume a semicolon, or, failing that, see if we are allowed to\n // pretend that there is a semicolon at this position.\n\n semicolon(): void {\n if (!this.isLineTerminator()) this.unexpected(null, tt.semi);\n }\n\n // Expect a token of a given type. If found, consume it, otherwise,\n // raise an unexpected token error at given pos.\n\n expect(type: TokenType, pos?: ?number): void {\n this.eat(type) || this.unexpected(pos, type);\n }\n\n // Throws if the current token and the prev one are separated by a space.\n assertNoSpace(message: string = \"Unexpected space.\"): void {\n if (this.state.start > this.state.lastTokEnd) {\n this.raise(this.state.lastTokEnd, message);\n }\n }\n\n // Raise an unexpected token error. Can take the expected token type\n // instead of a message string.\n\n unexpected(\n pos: ?number,\n messageOrType: string | TokenType = \"Unexpected token\",\n ): empty {\n if (typeof messageOrType !== \"string\") {\n messageOrType = `Unexpected token, expected \"${messageOrType.label}\"`;\n }\n throw this.raise(pos != null ? pos : this.state.start, messageOrType);\n }\n\n expectPlugin(name: string, pos?: ?number): true {\n if (!this.hasPlugin(name)) {\n throw this.raise(\n pos != null ? pos : this.state.start,\n `This experimental syntax requires enabling the parser plugin: '${name}'`,\n { missingPluginNames: [name] },\n );\n }\n\n return true;\n }\n\n expectOnePlugin(names: Array<string>, pos?: ?number): void {\n if (!names.some(n => this.hasPlugin(n))) {\n throw this.raise(\n pos != null ? pos : this.state.start,\n `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(\n \", \",\n )}'`,\n { missingPluginNames: names },\n );\n }\n }\n\n checkYieldAwaitInDefaultParams() {\n if (\n this.state.yieldPos !== -1 &&\n (this.state.awaitPos === -1 || this.state.yieldPos < this.state.awaitPos)\n ) {\n this.raise(\n this.state.yieldPos,\n \"Yield cannot be used as name inside a generator function\",\n );\n }\n if (this.state.awaitPos !== -1) {\n this.raise(\n this.state.awaitPos,\n \"Await cannot be used as name inside an async function\",\n );\n }\n }\n\n strictDirective(start: number): boolean {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n // $FlowIgnore\n start += skipWhiteSpace.exec(this.input)[0].length;\n const match = literal.exec(this.input.slice(start));\n if (!match) break;\n if (match[2] === \"use strict\") return true;\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n // $FlowIgnore\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\") {\n start++;\n }\n }\n\n return false;\n }\n\n // tryParse will clone parser state.\n // It is expensive and should be used with cautions\n tryParse<T: Node | $ReadOnlyArray<Node>>(\n fn: (abort: (node?: T) => empty) => T,\n oldState: State = this.state.clone(),\n ):\n | TryParse<T, null, false, false, null>\n | TryParse<T | null, SyntaxError, boolean, false, State>\n | TryParse<T | null, null, false, true, State> {\n const abortSignal: { node: T | null } = { node: null };\n try {\n const node = fn((node = null) => {\n abortSignal.node = node;\n throw abortSignal;\n });\n if (this.state.errors.length > oldState.errors.length) {\n const failState = this.state;\n this.state = oldState;\n return {\n node,\n error: (failState.errors[oldState.errors.length]: SyntaxError),\n thrown: false,\n aborted: false,\n failState,\n };\n }\n\n return {\n node,\n error: null,\n thrown: false,\n aborted: false,\n failState: null,\n };\n } catch (error) {\n const failState = this.state;\n this.state = oldState;\n if (error instanceof SyntaxError) {\n return { node: null, error, thrown: true, aborted: false, failState };\n }\n if (error === abortSignal) {\n return {\n node: abortSignal.node,\n error: null,\n thrown: false,\n aborted: true,\n failState,\n };\n }\n\n throw error;\n }\n }\n}\n","// @flow\n\nimport type Parser from \"./index\";\nimport UtilParser from \"./util\";\nimport { SourceLocation, type Position } from \"../util/location\";\nimport type { Comment, Node as NodeType, NodeBase } from \"../types\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n constructor(parser: Parser, pos: number, loc: Position) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n this.loc = new SourceLocation(loc);\n if (parser && parser.options.ranges) this.range = [pos, 0];\n if (parser && parser.filename) this.loc.filename = parser.filename;\n }\n\n type: string;\n start: number;\n end: number;\n loc: SourceLocation;\n range: [number, number];\n leadingComments: Array<Comment>;\n trailingComments: Array<Comment>;\n innerComments: Array<Comment>;\n extra: { [key: string]: any };\n\n __clone(): this {\n // $FlowIgnore\n const newNode: any = new Node();\n const keys = Object.keys(this);\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n // Do not clone comments that are already attached to the node\n if (\n key !== \"leadingComments\" &&\n key !== \"trailingComments\" &&\n key !== \"innerComments\"\n ) {\n // $FlowIgnore\n newNode[key] = this[key];\n }\n }\n\n return newNode;\n }\n}\n\nexport class NodeUtils extends UtilParser {\n startNode<T: NodeType>(): T {\n // $FlowIgnore\n return new Node(this, this.state.start, this.state.startLoc);\n }\n\n startNodeAt<T: NodeType>(pos: number, loc: Position): T {\n // $FlowIgnore\n return new Node(this, pos, loc);\n }\n\n /** Start a new node with a previous node's location. */\n startNodeAtNode<T: NodeType>(type: NodeType): T {\n return this.startNodeAt(type.start, type.loc.start);\n }\n\n // Finish an AST node, adding `type` and `end` properties.\n\n finishNode<T: NodeType>(node: T, type: string): T {\n return this.finishNodeAt(\n node,\n type,\n this.state.lastTokEnd,\n this.state.lastTokEndLoc,\n );\n }\n\n // Finish node at given position\n\n finishNodeAt<T: NodeType>(\n node: T,\n type: string,\n pos: number,\n loc: Position,\n ): T {\n if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n throw new Error(\n \"Do not call finishNode*() twice on the same node.\" +\n \" Instead use resetEndLocation() or change type directly.\",\n );\n }\n node.type = type;\n node.end = pos;\n node.loc.end = loc;\n if (this.options.ranges) node.range[1] = pos;\n this.processComment(node);\n return node;\n }\n\n resetStartLocation(node: NodeBase, start: number, startLoc: Position): void {\n node.start = start;\n node.loc.start = startLoc;\n if (this.options.ranges) node.range[0] = start;\n }\n\n resetEndLocation(\n node: NodeBase,\n end?: number = this.state.lastTokEnd,\n endLoc?: Position = this.state.lastTokEndLoc,\n ): void {\n node.end = end;\n node.loc.end = endLoc;\n if (this.options.ranges) node.range[1] = end;\n }\n\n /**\n * Reset the start location of node to the start location of locationNode\n */\n resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n this.resetStartLocation(node, locationNode.start, locationNode.loc.start);\n }\n}\n","// @flow\n\nimport * as charCodes from \"charcodes\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport type {\n TSParameterProperty,\n Decorator,\n Expression,\n Identifier,\n Node,\n ObjectExpression,\n ObjectPattern,\n Pattern,\n RestElement,\n SpreadElement,\n} from \"../types\";\nimport type { Pos, Position } from \"../util/location\";\nimport {\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n} from \"../util/identifier\";\nimport { NodeUtils } from \"./node\";\nimport { type BindingTypes, BIND_NONE } from \"../util/scopeflags\";\n\nconst unwrapParenthesizedExpression = (node: Node) => {\n return node.type === \"ParenthesizedExpression\"\n ? unwrapParenthesizedExpression(node.expression)\n : node;\n};\n\nexport default class LValParser extends NodeUtils {\n // Forward-declaration: defined in expression.js\n +parseIdentifier: (liberal?: boolean) => Identifier;\n +parseMaybeAssign: (\n noIn?: ?boolean,\n refShorthandDefaultPos?: ?Pos,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ) => Expression;\n +parseObj: <T: ObjectPattern | ObjectExpression>(\n isPattern: boolean,\n refShorthandDefaultPos?: ?Pos,\n ) => T;\n // Forward-declaration: defined in statement.js\n +parseDecorator: () => Decorator;\n\n // Convert existing expression atom to assignable pattern\n // if possible.\n // NOTE: There is a corresponding \"isAssignable\" method in flow.js.\n // When this one is updated, please check if also that one needs to be updated.\n\n toAssignable(\n node: Node,\n isBinding: ?boolean,\n contextDescription: string,\n ): Node {\n if (node) {\n if (\n (this.options.createParenthesizedExpressions &&\n node.type === \"ParenthesizedExpression\") ||\n node.extra?.parenthesized\n ) {\n const parenthesized = unwrapParenthesizedExpression(node);\n if (\n parenthesized.type !== \"Identifier\" &&\n parenthesized.type !== \"MemberExpression\"\n ) {\n this.raise(node.start, \"Invalid parenthesized assignment pattern\");\n }\n }\n\n switch (node.type) {\n case \"Identifier\":\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n break;\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n for (\n let i = 0, length = node.properties.length, last = length - 1;\n i < length;\n i++\n ) {\n const prop = node.properties[i];\n const isLast = i === last;\n this.toAssignableObjectExpressionProp(prop, isBinding, isLast);\n\n if (\n isLast &&\n prop.type === \"RestElement\" &&\n node.extra?.trailingComma\n ) {\n this.raiseRestNotLast(node.extra.trailingComma);\n }\n }\n break;\n\n case \"ObjectProperty\":\n this.toAssignable(node.value, isBinding, contextDescription);\n break;\n\n case \"SpreadElement\": {\n this.checkToRestConversion(node);\n\n node.type = \"RestElement\";\n const arg = node.argument;\n this.toAssignable(arg, isBinding, contextDescription);\n break;\n }\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n this.toAssignableList(\n node.elements,\n isBinding,\n contextDescription,\n node.extra?.trailingComma,\n );\n break;\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") {\n this.raise(\n node.left.end,\n \"Only '=' operator can be used for specifying default value.\",\n );\n }\n\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding, contextDescription);\n break;\n\n case \"ParenthesizedExpression\":\n node.expression = this.toAssignable(\n node.expression,\n isBinding,\n contextDescription,\n );\n break;\n\n case \"MemberExpression\":\n if (!isBinding) break;\n\n default:\n // We don't know how to deal with this node. It will\n // be reported by a later call to checkLVal\n }\n }\n return node;\n }\n\n toAssignableObjectExpressionProp(\n prop: Node,\n isBinding: ?boolean,\n isLast: boolean,\n ) {\n if (prop.type === \"ObjectMethod\") {\n const error =\n prop.kind === \"get\" || prop.kind === \"set\"\n ? \"Object pattern can't contain getter or setter\"\n : \"Object pattern can't contain methods\";\n\n this.raise(prop.key.start, error);\n } else if (prop.type === \"SpreadElement\" && !isLast) {\n this.raiseRestNotLast(prop.start);\n } else {\n this.toAssignable(prop, isBinding, \"object destructuring pattern\");\n }\n }\n\n // Convert list of expression atoms to binding list.\n\n toAssignableList(\n exprList: Expression[],\n isBinding: ?boolean,\n contextDescription: string,\n trailingCommaPos?: ?number,\n ): $ReadOnlyArray<Pattern> {\n let end = exprList.length;\n if (end) {\n const last = exprList[end - 1];\n if (last && last.type === \"RestElement\") {\n --end;\n } else if (last && last.type === \"SpreadElement\") {\n last.type = \"RestElement\";\n const arg = last.argument;\n this.toAssignable(arg, isBinding, contextDescription);\n if (\n arg.type !== \"Identifier\" &&\n arg.type !== \"MemberExpression\" &&\n arg.type !== \"ArrayPattern\" &&\n arg.type !== \"ObjectPattern\"\n ) {\n this.unexpected(arg.start);\n }\n\n if (trailingCommaPos) {\n this.raiseTrailingCommaAfterRest(trailingCommaPos);\n }\n\n --end;\n }\n }\n for (let i = 0; i < end; i++) {\n const elt = exprList[i];\n if (elt) {\n this.toAssignable(elt, isBinding, contextDescription);\n if (elt.type === \"RestElement\") {\n this.raiseRestNotLast(elt.start);\n }\n }\n }\n return exprList;\n }\n\n // Convert list of expression atoms to a list of\n\n toReferencedList(\n exprList: $ReadOnlyArray<?Expression>,\n isParenthesizedExpr?: boolean, // eslint-disable-line no-unused-vars\n ): $ReadOnlyArray<?Expression> {\n return exprList;\n }\n\n toReferencedListDeep(\n exprList: $ReadOnlyArray<?Expression>,\n isParenthesizedExpr?: boolean,\n ): void {\n this.toReferencedList(exprList, isParenthesizedExpr);\n\n for (const expr of exprList) {\n if (expr && expr.type === \"ArrayExpression\") {\n this.toReferencedListDeep(expr.elements);\n }\n }\n }\n\n // Parses spread element.\n\n parseSpread(\n refShorthandDefaultPos: ?Pos,\n refNeedsArrowPos?: ?Pos,\n ): SpreadElement {\n const node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(\n false,\n refShorthandDefaultPos,\n undefined,\n refNeedsArrowPos,\n );\n return this.finishNode(node, \"SpreadElement\");\n }\n\n parseRestBinding(): RestElement {\n const node = this.startNode();\n this.next();\n node.argument = this.parseBindingAtom();\n return this.finishNode(node, \"RestElement\");\n }\n\n // Parses lvalue (assignable) atom.\n parseBindingAtom(): Pattern {\n switch (this.state.type) {\n case tt.bracketL: {\n const node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(\n tt.bracketR,\n charCodes.rightSquareBracket,\n true,\n );\n return this.finishNode(node, \"ArrayPattern\");\n }\n\n case tt.braceL:\n return this.parseObj(true);\n }\n\n return this.parseIdentifier();\n }\n\n parseBindingList(\n close: TokenType,\n closeCharCode: $Values<typeof charCodes>,\n allowEmpty?: boolean,\n allowModifiers?: boolean,\n ): $ReadOnlyArray<Pattern | TSParameterProperty> {\n const elts: Array<Pattern | TSParameterProperty> = [];\n let first = true;\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n }\n if (allowEmpty && this.match(tt.comma)) {\n // $FlowFixMe This method returns `$ReadOnlyArray<?Pattern>` if `allowEmpty` is set.\n elts.push(null);\n } else if (this.eat(close)) {\n break;\n } else if (this.match(tt.ellipsis)) {\n elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));\n this.checkCommaAfterRest(closeCharCode);\n this.expect(close);\n break;\n } else {\n const decorators = [];\n if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n this.raise(\n this.state.start,\n \"Stage 2 decorators cannot be used to decorate parameters\",\n );\n }\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n elts.push(this.parseAssignableListItem(allowModifiers, decorators));\n }\n }\n return elts;\n }\n\n parseAssignableListItem(\n allowModifiers: ?boolean,\n decorators: Decorator[],\n ): Pattern | TSParameterProperty {\n const left = this.parseMaybeDefault();\n this.parseAssignableListItemTypes(left);\n const elt = this.parseMaybeDefault(left.start, left.loc.start, left);\n if (decorators.length) {\n left.decorators = decorators;\n }\n return elt;\n }\n\n parseAssignableListItemTypes(param: Pattern): Pattern {\n return param;\n }\n\n // Parses assignment pattern around given atom if possible.\n\n parseMaybeDefault(\n startPos?: ?number,\n startLoc?: ?Position,\n left?: ?Pattern,\n ): Pattern {\n startLoc = startLoc || this.state.startLoc;\n startPos = startPos || this.state.start;\n left = left || this.parseBindingAtom();\n if (!this.eat(tt.eq)) return left;\n\n const node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\");\n }\n\n // Verify that a node is an lval — something that can be assigned\n // to.\n\n checkLVal(\n expr: Expression,\n bindingType: BindingTypes = BIND_NONE,\n checkClashes: ?{ [key: string]: boolean },\n contextDescription: string,\n disallowLetBinding?: boolean,\n strictModeChanged?: boolean = false,\n ): void {\n switch (expr.type) {\n case \"Identifier\":\n if (\n this.state.strict &&\n // \"Global\" reserved words have already been checked by parseIdentifier,\n // unless they have been found in the id or parameters of a strict-mode\n // function in a sloppy context.\n (strictModeChanged\n ? isStrictBindReservedWord(expr.name, this.inModule)\n : isStrictBindOnlyReservedWord(expr.name))\n ) {\n this.raise(\n expr.start,\n `${bindingType === BIND_NONE ? \"Assigning to\" : \"Binding\"} '${\n expr.name\n }' in strict mode`,\n );\n }\n\n if (checkClashes) {\n // we need to prefix this with an underscore for the cases where we have a key of\n // `__proto__`. there's a bug in old V8 where the following wouldn't work:\n //\n // > var obj = Object.create(null);\n // undefined\n // > obj.__proto__\n // null\n // > obj.__proto__ = true;\n // true\n // > obj.__proto__\n // null\n const key = `_${expr.name}`;\n\n if (checkClashes[key]) {\n this.raise(expr.start, \"Argument name clash\");\n } else {\n checkClashes[key] = true;\n }\n }\n if (disallowLetBinding && expr.name === \"let\") {\n this.raise(\n expr.start,\n \"'let' is not allowed to be used as a name in 'let' or 'const' declarations.\",\n );\n }\n if (!(bindingType & BIND_NONE)) {\n this.scope.declareName(expr.name, bindingType, expr.start);\n }\n break;\n\n case \"MemberExpression\":\n if (bindingType !== BIND_NONE) {\n this.raise(expr.start, \"Binding member expression\");\n }\n break;\n\n case \"ObjectPattern\":\n for (let prop of expr.properties) {\n if (prop.type === \"ObjectProperty\") prop = prop.value;\n // If we find here an ObjectMethod, it's because this was originally\n // an ObjectExpression which has then been converted.\n // toAssignable already reported this error with a nicer message.\n else if (prop.type === \"ObjectMethod\") continue;\n\n this.checkLVal(\n prop,\n bindingType,\n checkClashes,\n \"object destructuring pattern\",\n disallowLetBinding,\n );\n }\n break;\n\n case \"ArrayPattern\":\n for (const elem of expr.elements) {\n if (elem) {\n this.checkLVal(\n elem,\n bindingType,\n checkClashes,\n \"array destructuring pattern\",\n disallowLetBinding,\n );\n }\n }\n break;\n\n case \"AssignmentPattern\":\n this.checkLVal(\n expr.left,\n bindingType,\n checkClashes,\n \"assignment pattern\",\n );\n break;\n\n case \"RestElement\":\n this.checkLVal(\n expr.argument,\n bindingType,\n checkClashes,\n \"rest element\",\n );\n break;\n\n case \"ParenthesizedExpression\":\n this.checkLVal(\n expr.expression,\n bindingType,\n checkClashes,\n \"parenthesized expression\",\n );\n break;\n\n default: {\n const message =\n (bindingType === BIND_NONE\n ? \"Invalid\"\n : /* istanbul ignore next */ \"Binding invalid\") +\n \" left-hand side\" +\n (contextDescription\n ? \" in \" + contextDescription\n : /* istanbul ignore next */ \"expression\");\n this.raise(expr.start, message);\n }\n }\n }\n\n checkToRestConversion(node: SpreadElement): void {\n if (\n node.argument.type !== \"Identifier\" &&\n node.argument.type !== \"MemberExpression\"\n ) {\n this.raise(node.argument.start, \"Invalid rest operator's argument\");\n }\n }\n\n checkCommaAfterRest(close: $Values<typeof charCodes>): void {\n if (this.match(tt.comma)) {\n if (this.lookaheadCharCode() === close) {\n this.raiseTrailingCommaAfterRest(this.state.start);\n } else {\n this.raiseRestNotLast(this.state.start);\n }\n }\n }\n\n raiseRestNotLast(pos: number) {\n throw this.raise(pos, `Rest element must be last element`);\n }\n\n raiseTrailingCommaAfterRest(pos: number) {\n this.raise(pos, `Unexpected trailing comma after rest element`);\n }\n}\n","// @flow\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport { types as ct } from \"../tokenizer/context\";\nimport * as N from \"../types\";\nimport LValParser from \"./lval\";\nimport {\n isKeyword,\n isReservedWord,\n isStrictReservedWord,\n isStrictBindReservedWord,\n} from \"../util/identifier\";\nimport type { Pos, Position } from \"../util/location\";\nimport * as charCodes from \"charcodes\";\nimport {\n BIND_OUTSIDE,\n BIND_VAR,\n functionFlags,\n SCOPE_ARROW,\n SCOPE_CLASS,\n SCOPE_DIRECT_SUPER,\n SCOPE_SUPER,\n SCOPE_PROGRAM,\n} from \"../util/scopeflags\";\n\nexport default class ExpressionParser extends LValParser {\n // Forward-declaration: defined in statement.js\n +parseBlock: (\n allowDirectives?: boolean,\n createNewLexicalScope?: boolean,\n ) => N.BlockStatement;\n +parseClass: (\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean,\n ) => N.Class;\n +parseDecorators: (allowExport?: boolean) => void;\n +parseFunction: <T: N.NormalFunction>(\n node: T,\n statement?: number,\n allowExpressionBody?: boolean,\n isAsync?: boolean,\n ) => T;\n +parseFunctionParams: (node: N.Function, allowModifiers?: boolean) => void;\n +takeDecorators: (node: N.HasDecorators) => void;\n\n // Check if property __proto__ has been used more than once.\n // If the expression is a destructuring assignment, then __proto__ may appear\n // multiple times. Otherwise, __proto__ is a duplicated key.\n\n checkDuplicatedProto(\n prop: N.ObjectMember | N.SpreadElement,\n protoRef: { used: boolean, start?: number },\n ): void {\n if (\n prop.type === \"SpreadElement\" ||\n prop.computed ||\n prop.kind ||\n // $FlowIgnore\n prop.shorthand\n ) {\n return;\n }\n\n const key = prop.key;\n // It is either an Identifier or a String/NumericLiteral\n const name = key.type === \"Identifier\" ? key.name : String(key.value);\n\n if (name === \"__proto__\") {\n // Store the first redefinition's position\n if (protoRef.used && !protoRef.start) {\n protoRef.start = key.start;\n }\n\n protoRef.used = true;\n }\n }\n\n // Convenience method to parse an Expression only\n getExpression(): N.Expression {\n this.scope.enter(SCOPE_PROGRAM);\n this.nextToken();\n const expr = this.parseExpression();\n if (!this.match(tt.eof)) {\n this.unexpected();\n }\n expr.comments = this.state.comments;\n expr.errors = this.state.errors;\n return expr;\n }\n\n // ### Expression parsing\n\n // These nest, from the most general expression type at the top to\n // 'atomic', nondivisible expression types at the bottom. Most of\n // the functions will simply let the function (s) below them parse,\n // and, *if* the syntactic construct they handle is present, wrap\n // the AST node that the inner parser gave them in another node.\n\n // Parse a full expression. The optional arguments are used to\n // forbid the `in` operator (in for loops initialization expressions)\n // and provide reference for storing '=' operator inside shorthand\n // property assignment in contexts where both object expression\n // and object pattern might appear (so it's possible to raise\n // delayed syntax error at correct position).\n\n parseExpression(noIn?: boolean, refShorthandDefaultPos?: Pos): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos);\n if (this.match(tt.comma)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(tt.comma)) {\n node.expressions.push(\n this.parseMaybeAssign(noIn, refShorthandDefaultPos),\n );\n }\n this.toReferencedList(node.expressions);\n return this.finishNode(node, \"SequenceExpression\");\n }\n return expr;\n }\n\n // Parse an assignment expression. This includes applications of\n // operators like `+=`.\n\n parseMaybeAssign(\n noIn?: ?boolean,\n refShorthandDefaultPos?: ?Pos,\n afterLeftParse?: Function,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n if (this.isContextual(\"yield\")) {\n if (this.scope.inGenerator) {\n let left = this.parseYield(noIn);\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n return left;\n } else {\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n this.state.exprAllowed = false;\n }\n }\n\n let failOnShorthandAssign;\n if (refShorthandDefaultPos) {\n failOnShorthandAssign = false;\n } else {\n refShorthandDefaultPos = { start: 0 };\n failOnShorthandAssign = true;\n }\n\n if (this.match(tt.parenL) || this.match(tt.name)) {\n this.state.potentialArrowAt = this.state.start;\n }\n\n let left = this.parseMaybeConditional(\n noIn,\n refShorthandDefaultPos,\n refNeedsArrowPos,\n );\n if (afterLeftParse) {\n left = afterLeftParse.call(this, left, startPos, startLoc);\n }\n if (this.state.type.isAssign) {\n const node = this.startNodeAt(startPos, startLoc);\n const operator = this.state.value;\n node.operator = operator;\n\n if (operator === \"??=\") {\n this.expectPlugin(\"nullishCoalescingOperator\");\n this.expectPlugin(\"logicalAssignment\");\n }\n if (operator === \"||=\" || operator === \"&&=\") {\n this.expectPlugin(\"logicalAssignment\");\n }\n node.left = this.match(tt.eq)\n ? this.toAssignable(left, undefined, \"assignment expression\")\n : left;\n\n if (refShorthandDefaultPos.start >= node.left.start) {\n refShorthandDefaultPos.start = 0; // reset because shorthand default was used correctly\n }\n\n this.checkLVal(left, undefined, undefined, \"assignment expression\");\n\n this.next();\n node.right = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"AssignmentExpression\");\n } else if (failOnShorthandAssign && refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n\n return left;\n }\n\n // Parse a ternary conditional (`?:`) operator.\n\n parseMaybeConditional(\n noIn: ?boolean,\n refShorthandDefaultPos: Pos,\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprOps(noIn, refShorthandDefaultPos);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n\n return this.parseConditional(\n expr,\n noIn,\n startPos,\n startLoc,\n refNeedsArrowPos,\n );\n }\n\n parseConditional(\n expr: N.Expression,\n noIn: ?boolean,\n startPos: number,\n startLoc: Position,\n // FIXME: Disabling this for now since can't seem to get it to play nicely\n // eslint-disable-next-line no-unused-vars\n refNeedsArrowPos?: ?Pos,\n ): N.Expression {\n if (this.eat(tt.question)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(tt.colon);\n node.alternate = this.parseMaybeAssign(noIn);\n return this.finishNode(node, \"ConditionalExpression\");\n }\n return expr;\n }\n\n // Start the precedence parser.\n\n parseExprOps(noIn: ?boolean, refShorthandDefaultPos: Pos): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseMaybeUnary(refShorthandDefaultPos);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) {\n return expr;\n }\n\n return this.parseExprOp(expr, startPos, startLoc, -1, noIn);\n }\n\n // Parse binary operators with the operator precedence parsing\n // algorithm. `left` is the left-hand side of the operator.\n // `minPrec` provides context that allows the function to stop and\n // defer further parser to one of its callers when it encounters an\n // operator that has a lower precedence than the set it is parsing.\n\n parseExprOp(\n left: N.Expression,\n leftStartPos: number,\n leftStartLoc: Position,\n minPrec: number,\n noIn: ?boolean,\n ): N.Expression {\n const prec = this.state.type.binop;\n if (prec != null && (!noIn || !this.match(tt._in))) {\n if (prec > minPrec) {\n const operator = this.state.value;\n if (operator === \"|>\" && this.state.inFSharpPipelineDirectBody) {\n return left;\n }\n const node = this.startNodeAt(leftStartPos, leftStartLoc);\n node.left = left;\n node.operator = operator;\n if (\n operator === \"**\" &&\n left.type === \"UnaryExpression\" &&\n (this.options.createParenthesizedExpressions ||\n !(left.extra && left.extra.parenthesized))\n ) {\n this.raise(\n left.argument.start,\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n );\n }\n\n const op = this.state.type;\n\n if (op === tt.pipeline) {\n this.expectPlugin(\"pipelineOperator\");\n this.state.inPipeline = true;\n this.checkPipelineAtInfixOperator(left, leftStartPos);\n } else if (op === tt.nullishCoalescing) {\n this.expectPlugin(\"nullishCoalescingOperator\");\n }\n\n this.next();\n\n if (\n op === tt.pipeline &&\n this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"minimal\"\n ) {\n if (\n this.match(tt.name) &&\n this.state.value === \"await\" &&\n this.scope.inAsync\n ) {\n throw this.raise(\n this.state.start,\n `Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal`,\n );\n }\n }\n\n node.right = this.parseExprOpRightExpr(op, prec, noIn);\n\n /* this check is for all ?? operators\n * a ?? b && c for this example\n * b && c => This is considered as a logical expression in the ast tree\n * a => Identifier\n * so for ?? operator we need to check in this case the right expression to have parenthesis\n * second case a && b ?? c\n * here a && b => This is considered as a logical expression in the ast tree\n * c => identifier\n * so now here for ?? operator we need to check the left expression to have parenthesis\n * if the parenthesis is missing we raise an error and throw it\n */\n if (op === tt.nullishCoalescing) {\n if (\n left.type === \"LogicalExpression\" &&\n left.operator !== \"??\" &&\n !(left.extra && left.extra.parenthesized)\n ) {\n throw this.raise(\n left.start,\n `Nullish coalescing operator(??) requires parens when mixing with logical operators`,\n );\n } else if (\n node.right.type === \"LogicalExpression\" &&\n node.right.operator !== \"??\" &&\n !(node.right.extra && node.right.extra.parenthesized)\n ) {\n throw this.raise(\n node.right.start,\n `Nullish coalescing operator(??) requires parens when mixing with logical operators`,\n );\n }\n }\n\n this.finishNode(\n node,\n op === tt.logicalOR ||\n op === tt.logicalAND ||\n op === tt.nullishCoalescing\n ? \"LogicalExpression\"\n : \"BinaryExpression\",\n );\n\n return this.parseExprOp(\n node,\n leftStartPos,\n leftStartLoc,\n minPrec,\n noIn,\n );\n }\n }\n return left;\n }\n\n // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n // operator expressions, then apply any operator-specific functions.\n\n parseExprOpRightExpr(\n op: TokenType,\n prec: number,\n noIn: ?boolean,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n switch (op) {\n case tt.pipeline:\n switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n case \"smart\":\n return this.withTopicPermittingContext(() => {\n return this.parseSmartPipelineBody(\n this.parseExprOpBaseRightExpr(op, prec, noIn),\n startPos,\n startLoc,\n );\n });\n case \"fsharp\":\n return this.withSoloAwaitPermittingContext(() => {\n return this.parseFSharpPipelineBody(prec, noIn);\n });\n }\n // falls through\n\n default:\n return this.parseExprOpBaseRightExpr(op, prec, noIn);\n }\n }\n\n // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n // binary-operator expressions without applying any operator-specific functions.\n\n parseExprOpBaseRightExpr(\n op: TokenType,\n prec: number,\n noIn: ?boolean,\n ): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n return this.parseExprOp(\n this.parseMaybeUnary(),\n startPos,\n startLoc,\n op.rightAssociative ? prec - 1 : prec,\n noIn,\n );\n }\n\n // Parse unary operators, both prefix and postfix.\n\n parseMaybeUnary(refShorthandDefaultPos: ?Pos): N.Expression {\n if (this.isContextual(\"await\") && this.isAwaitAllowed()) {\n return this.parseAwait();\n } else if (this.state.type.prefix) {\n const node = this.startNode();\n const update = this.match(tt.incDec);\n node.operator = this.state.value;\n node.prefix = true;\n\n if (node.operator === \"throw\") {\n this.expectPlugin(\"throwExpressions\");\n }\n this.next();\n\n node.argument = this.parseMaybeUnary();\n\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n\n if (update) {\n this.checkLVal(node.argument, undefined, undefined, \"prefix operation\");\n } else if (this.state.strict && node.operator === \"delete\") {\n const arg = node.argument;\n\n if (arg.type === \"Identifier\") {\n this.raise(node.start, \"Deleting local variable in strict mode\");\n } else if (\n arg.type === \"MemberExpression\" &&\n arg.property.type === \"PrivateName\"\n ) {\n this.raise(node.start, \"Deleting a private field is not allowed\");\n }\n }\n\n return this.finishNode(\n node,\n update ? \"UpdateExpression\" : \"UnaryExpression\",\n );\n }\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr = this.parseExprSubscripts(refShorthandDefaultPos);\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;\n while (this.state.type.postfix && !this.canInsertSemicolon()) {\n const node = this.startNodeAt(startPos, startLoc);\n node.operator = this.state.value;\n node.prefix = false;\n node.argument = expr;\n this.checkLVal(expr, undefined, undefined, \"postfix operation\");\n this.next();\n expr = this.finishNode(node, \"UpdateExpression\");\n }\n return expr;\n }\n\n // Parse call, dot, and `[]`-subscript expressions.\n\n parseExprSubscripts(refShorthandDefaultPos: ?Pos): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n const potentialArrowAt = this.state.potentialArrowAt;\n const expr = this.parseExprAtom(refShorthandDefaultPos);\n\n if (\n expr.type === \"ArrowFunctionExpression\" &&\n expr.start === potentialArrowAt\n ) {\n return expr;\n }\n\n if (refShorthandDefaultPos && refShorthandDefaultPos.start) {\n return expr;\n }\n\n return this.parseSubscripts(expr, startPos, startLoc);\n }\n\n parseSubscripts(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls?: ?boolean,\n ): N.Expression {\n const state = {\n optionalChainMember: false,\n maybeAsyncArrow: this.atPossibleAsync(base),\n stop: false,\n };\n do {\n base = this.parseSubscript(base, startPos, startLoc, noCalls, state);\n\n // After parsing a subscript, this isn't \"async\" for sure.\n state.maybeAsyncArrow = false;\n } while (!state.stop);\n return base;\n }\n\n /**\n * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n * state.optionalChainMember to indicate that the member is currently in OptionalChain\n */\n parseSubscript(\n base: N.Expression,\n startPos: number,\n startLoc: Position,\n noCalls: ?boolean,\n state: N.ParseSubscriptState,\n ): N.Expression {\n if (!noCalls && this.eat(tt.doubleColon)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.callee = this.parseNoCallExpr();\n state.stop = true;\n return this.parseSubscripts(\n this.finishNode(node, \"BindExpression\"),\n startPos,\n startLoc,\n noCalls,\n );\n } else if (this.match(tt.questionDot)) {\n this.expectPlugin(\"optionalChaining\");\n state.optionalChainMember = true;\n if (noCalls && this.lookaheadCharCode() === charCodes.leftParenthesis) {\n state.stop = true;\n return base;\n }\n this.next();\n\n const node = this.startNodeAt(startPos, startLoc);\n\n if (this.eat(tt.bracketL)) {\n node.object = base;\n node.property = this.parseExpression();\n node.computed = true;\n node.optional = true;\n this.expect(tt.bracketR);\n return this.finishNode(node, \"OptionalMemberExpression\");\n } else if (this.eat(tt.parenL)) {\n node.callee = base;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else {\n node.object = base;\n node.property = this.parseIdentifier(true);\n node.computed = false;\n node.optional = true;\n return this.finishNode(node, \"OptionalMemberExpression\");\n }\n } else if (this.eat(tt.dot)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseMaybePrivateName();\n node.computed = false;\n if (\n node.property.type === \"PrivateName\" &&\n node.object.type === \"Super\"\n ) {\n this.raise(startPos, \"Private fields can't be accessed on super\");\n }\n if (state.optionalChainMember) {\n node.optional = false;\n return this.finishNode(node, \"OptionalMemberExpression\");\n }\n return this.finishNode(node, \"MemberExpression\");\n } else if (this.eat(tt.bracketL)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n node.property = this.parseExpression();\n node.computed = true;\n this.expect(tt.bracketR);\n if (state.optionalChainMember) {\n node.optional = false;\n return this.finishNode(node, \"OptionalMemberExpression\");\n }\n return this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.match(tt.parenL)) {\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = true;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n\n this.next();\n\n let node = this.startNodeAt(startPos, startLoc);\n node.callee = base;\n\n node.arguments = this.parseCallExpressionArguments(\n tt.parenR,\n state.maybeAsyncArrow,\n base.type === \"Import\",\n base.type !== \"Super\",\n node,\n );\n this.finishCallExpression(node, state.optionalChainMember);\n\n if (state.maybeAsyncArrow && this.shouldParseAsyncArrow()) {\n state.stop = true;\n\n node = this.parseAsyncArrowFromCallExpression(\n this.startNodeAt(startPos, startLoc),\n node,\n );\n this.checkYieldAwaitInDefaultParams();\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n } else {\n this.toReferencedListDeep(node.arguments);\n\n // We keep the old value if it isn't null, for cases like\n // (x = async(yield)) => {}\n //\n // Hi developer of the future :) If you are implementing generator\n // arrow functions, please read the note below about \"await\" and\n // verify if the same logic is needed for yield.\n if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;\n\n // Await is trickier than yield. When parsing a possible arrow function\n // (e.g. something starting with `async(`) we don't know if its possible\n // parameters will actually be inside an async arrow function or if it is\n // a normal call expression.\n // If it ended up being a call expression, if we are in a context where\n // await expression are disallowed (and thus \"await\" is an identifier)\n // we must be careful not to leak this.state.awaitPos to an even outer\n // context, where \"await\" could not be an identifier.\n // For example, this code is valid because \"await\" isn't directly inside\n // an async function:\n //\n // async function a() {\n // function b(param = async (await)) {\n // }\n // }\n //\n if (\n (!this.isAwaitAllowed() && !oldMaybeInArrowParameters) ||\n oldAwaitPos !== -1\n ) {\n this.state.awaitPos = oldAwaitPos;\n }\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n return node;\n } else if (this.match(tt.backQuote)) {\n return this.parseTaggedTemplateExpression(\n startPos,\n startLoc,\n base,\n state,\n );\n } else {\n state.stop = true;\n return base;\n }\n }\n\n parseTaggedTemplateExpression(\n startPos: number,\n startLoc: Position,\n base: N.Expression,\n state: N.ParseSubscriptState,\n typeArguments?: ?N.TsTypeParameterInstantiation,\n ): N.TaggedTemplateExpression {\n const node: N.TaggedTemplateExpression = this.startNodeAt(\n startPos,\n startLoc,\n );\n node.tag = base;\n node.quasi = this.parseTemplate(true);\n if (typeArguments) node.typeParameters = typeArguments;\n if (state.optionalChainMember) {\n this.raise(\n startPos,\n \"Tagged Template Literals are not allowed in optionalChain\",\n );\n }\n return this.finishNode(node, \"TaggedTemplateExpression\");\n }\n\n atPossibleAsync(base: N.Expression): boolean {\n return (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.lastTokEnd === base.end &&\n !this.canInsertSemicolon() &&\n this.input.slice(base.start, base.end) === \"async\"\n );\n }\n\n finishCallExpression<T: N.CallExpression | N.OptionalCallExpression>(\n node: T,\n optional: boolean,\n ): N.Expression {\n if (node.callee.type === \"Import\") {\n if (node.arguments.length !== 1) {\n this.raise(node.start, \"import() requires exactly one argument\");\n } else {\n const importArg = node.arguments[0];\n if (importArg && importArg.type === \"SpreadElement\") {\n this.raise(importArg.start, \"... is not allowed in import()\");\n }\n }\n }\n return this.finishNode(\n node,\n optional ? \"OptionalCallExpression\" : \"CallExpression\",\n );\n }\n\n parseCallExpressionArguments(\n close: TokenType,\n possibleAsyncArrow: boolean,\n dynamicImport?: boolean,\n allowPlaceholder?: boolean,\n nodeForExtra?: ?N.Node,\n ): $ReadOnlyArray<?N.Expression> {\n const elts = [];\n let innerParenStart;\n let first = true;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n if (dynamicImport) {\n this.raise(\n this.state.lastTokStart,\n \"Trailing comma is disallowed inside import(...) arguments\",\n );\n }\n if (nodeForExtra) {\n this.addExtra(\n nodeForExtra,\n \"trailingComma\",\n this.state.lastTokStart,\n );\n }\n this.next();\n break;\n }\n }\n\n // we need to make sure that if this is an async arrow functions,\n // that we don't allow inner parens inside the params\n if (this.match(tt.parenL) && !innerParenStart) {\n innerParenStart = this.state.start;\n }\n\n elts.push(\n this.parseExprListItem(\n false,\n possibleAsyncArrow ? { start: 0 } : undefined,\n possibleAsyncArrow ? { start: 0 } : undefined,\n allowPlaceholder,\n ),\n );\n }\n\n // we found an async arrow function so let's not allow any inner parens\n if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {\n this.unexpected();\n }\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return elts;\n }\n\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.arrow) && !this.canInsertSemicolon();\n }\n\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n this.expect(tt.arrow);\n this.parseArrowExpression(\n node,\n call.arguments,\n true,\n call.extra?.trailingComma,\n );\n return node;\n }\n\n // Parse a no-call expression (like argument of `new` or `::` operators).\n\n parseNoCallExpr(): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);\n }\n\n // Parse an atomic expression — either a single token that is an\n // expression, an expression started by a keyword like `function` or\n // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n // or `{}`.\n\n parseExprAtom(refShorthandDefaultPos?: ?Pos): N.Expression {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.state.type === tt.slash) this.readRegexp();\n\n const canBeArrow = this.state.potentialArrowAt === this.state.start;\n let node;\n\n switch (this.state.type) {\n case tt._super:\n node = this.startNode();\n this.next();\n if (\n this.match(tt.parenL) &&\n !this.scope.allowDirectSuper &&\n !this.options.allowSuperOutsideMethod\n ) {\n this.raise(\n node.start,\n \"super() is only valid inside a class constructor of a subclass. \" +\n \"Maybe a typo in the method name ('constructor') or not extending another class?\",\n );\n } else if (\n !this.scope.allowSuper &&\n !this.options.allowSuperOutsideMethod\n ) {\n this.raise(\n node.start,\n \"super is only allowed in object methods and classes\",\n );\n }\n\n if (\n !this.match(tt.parenL) &&\n !this.match(tt.bracketL) &&\n !this.match(tt.dot)\n ) {\n this.raise(\n node.start,\n \"super can only be used with function calls (i.e. super()) or \" +\n \"in property accesses (i.e. super.prop or super[prop])\",\n );\n }\n\n return this.finishNode(node, \"Super\");\n\n case tt._import:\n node = this.startNode();\n this.next();\n\n if (this.match(tt.dot)) {\n return this.parseImportMetaProperty(node);\n }\n\n this.expectPlugin(\"dynamicImport\", node.start);\n\n if (!this.match(tt.parenL)) {\n this.unexpected(null, tt.parenL);\n }\n return this.finishNode(node, \"Import\");\n case tt._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\");\n\n case tt.name: {\n node = this.startNode();\n const containsEsc = this.state.containsEsc;\n const id = this.parseIdentifier();\n\n if (\n !containsEsc &&\n id.name === \"async\" &&\n this.match(tt._function) &&\n !this.canInsertSemicolon()\n ) {\n const last = this.state.context.length - 1;\n if (this.state.context[last] !== ct.functionStatement) {\n // Since \"async\" is an identifier and normally identifiers\n // can't be followed by expression, the tokenizer assumes\n // that \"function\" starts a statement.\n // Fixing it in the tokenizer would mean tracking not only the\n // previous token (\"async\"), but also the one before to know\n // its beforeExpr value.\n // It's easier and more efficient to adjust the context here.\n throw new Error(\"Internal error\");\n }\n this.state.context[last] = ct.functionExpression;\n\n this.next();\n return this.parseFunction(node, undefined, true);\n } else if (\n canBeArrow &&\n !containsEsc &&\n id.name === \"async\" &&\n this.match(tt.name) &&\n !this.canInsertSemicolon()\n ) {\n const params = [this.parseIdentifier()];\n this.expect(tt.arrow);\n // let foo = async bar => {};\n this.parseArrowExpression(node, params, true);\n return node;\n }\n\n if (canBeArrow && this.match(tt.arrow) && !this.canInsertSemicolon()) {\n this.next();\n this.parseArrowExpression(node, [id], false);\n return node;\n }\n\n return id;\n }\n\n case tt._do: {\n this.expectPlugin(\"doExpressions\");\n const node = this.startNode();\n this.next();\n const oldLabels = this.state.labels;\n this.state.labels = [];\n node.body = this.parseBlock();\n this.state.labels = oldLabels;\n return this.finishNode(node, \"DoExpression\");\n }\n\n case tt.regexp: {\n const value = this.state.value;\n node = this.parseLiteral(value.value, \"RegExpLiteral\");\n node.pattern = value.pattern;\n node.flags = value.flags;\n return node;\n }\n\n case tt.num:\n return this.parseLiteral(this.state.value, \"NumericLiteral\");\n\n case tt.bigint:\n return this.parseLiteral(this.state.value, \"BigIntLiteral\");\n\n case tt.string:\n return this.parseLiteral(this.state.value, \"StringLiteral\");\n\n case tt._null:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"NullLiteral\");\n\n case tt._true:\n case tt._false:\n return this.parseBooleanLiteral();\n\n case tt.parenL:\n return this.parseParenAndDistinguishExpression(canBeArrow);\n\n case tt.bracketL: {\n const oldInFSharpPipelineDirectBody = this.state\n .inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(\n tt.bracketR,\n true,\n refShorthandDefaultPos,\n node,\n );\n if (!this.state.maybeInArrowParameters) {\n // This could be an array pattern:\n // ([a: string, b: string]) => {}\n // In this case, we don't have to call toReferencedList. We will\n // call it, if needed, when we are sure that it is a parenthesized\n // expression by calling toReferencedListDeep.\n this.toReferencedList(node.elements);\n }\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return this.finishNode(node, \"ArrayExpression\");\n }\n case tt.braceL: {\n const oldInFSharpPipelineDirectBody = this.state\n .inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = false;\n const ret = this.parseObj(false, refShorthandDefaultPos);\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n return ret;\n }\n case tt._function:\n return this.parseFunctionExpression();\n\n case tt.at:\n this.parseDecorators();\n\n case tt._class:\n node = this.startNode();\n this.takeDecorators(node);\n return this.parseClass(node, false);\n\n case tt._new:\n return this.parseNew();\n\n case tt.backQuote:\n return this.parseTemplate(false);\n\n case tt.doubleColon: {\n node = this.startNode();\n this.next();\n node.object = null;\n const callee = (node.callee = this.parseNoCallExpr());\n if (callee.type === \"MemberExpression\") {\n return this.finishNode(node, \"BindExpression\");\n } else {\n throw this.raise(\n callee.start,\n \"Binding should be performed on object property.\",\n );\n }\n }\n\n case tt.hash: {\n if (this.state.inPipeline) {\n node = this.startNode();\n\n if (\n this.getPluginOption(\"pipelineOperator\", \"proposal\") !== \"smart\"\n ) {\n this.raise(\n node.start,\n \"Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option.\",\n );\n }\n\n this.next();\n\n if (!this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) {\n this.raise(\n node.start,\n `Topic reference was used in a lexical context without topic binding`,\n );\n }\n\n this.registerTopicReference();\n return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n }\n }\n\n default:\n throw this.unexpected();\n }\n }\n\n parseBooleanLiteral(): N.BooleanLiteral {\n const node = this.startNode();\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(node, \"BooleanLiteral\");\n }\n\n parseMaybePrivateName(): N.PrivateName | N.Identifier {\n const isPrivate = this.match(tt.hash);\n\n if (isPrivate) {\n this.expectOnePlugin([\"classPrivateProperties\", \"classPrivateMethods\"]);\n const node = this.startNode();\n this.next();\n this.assertNoSpace(\"Unexpected space between # and identifier\");\n node.id = this.parseIdentifier(true);\n return this.finishNode(node, \"PrivateName\");\n } else {\n return this.parseIdentifier(true);\n }\n }\n\n parseFunctionExpression(): N.FunctionExpression | N.MetaProperty {\n const node = this.startNode();\n\n // We do not do parseIdentifier here because when parseFunctionExpression\n // is called we already know that the current token is a \"name\" with the value \"function\"\n // This will improve perf a tiny little bit as we do not do validation but more importantly\n // here is that parseIdentifier will remove an item from the expression stack\n // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n let meta = this.startNode();\n this.next();\n meta = this.createIdentifier(meta, \"function\");\n\n if (this.scope.inGenerator && this.eat(tt.dot)) {\n return this.parseMetaProperty(node, meta, \"sent\");\n }\n return this.parseFunction(node);\n }\n\n parseMetaProperty(\n node: N.MetaProperty,\n meta: N.Identifier,\n propertyName: string,\n ): N.MetaProperty {\n node.meta = meta;\n\n if (meta.name === \"function\" && propertyName === \"sent\") {\n if (this.isContextual(propertyName)) {\n this.expectPlugin(\"functionSent\");\n } else if (!this.hasPlugin(\"functionSent\")) {\n // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n this.unexpected();\n }\n }\n\n const containsEsc = this.state.containsEsc;\n\n node.property = this.parseIdentifier(true);\n\n if (node.property.name !== propertyName || containsEsc) {\n this.raise(\n node.property.start,\n `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`,\n );\n }\n\n return this.finishNode(node, \"MetaProperty\");\n }\n\n parseImportMetaProperty(node: N.MetaProperty): N.MetaProperty {\n const id = this.createIdentifier(this.startNodeAtNode(node), \"import\");\n this.expect(tt.dot);\n\n if (this.isContextual(\"meta\")) {\n this.expectPlugin(\"importMeta\");\n\n if (!this.inModule) {\n this.raise(\n id.start,\n `import.meta may appear only with 'sourceType: \"module\"'`,\n { code: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\" },\n );\n }\n this.sawUnambiguousESM = true;\n } else if (!this.hasPlugin(\"importMeta\")) {\n this.raise(\n id.start,\n `Dynamic imports require a parameter: import('a.js')`,\n );\n }\n\n return this.parseMetaProperty(node, id, \"meta\");\n }\n\n parseLiteral<T: N.Literal>(\n value: any,\n type: /*T[\"kind\"]*/ string,\n startPos?: number,\n startLoc?: Position,\n ): T {\n startPos = startPos || this.state.start;\n startLoc = startLoc || this.state.startLoc;\n\n const node = this.startNodeAt(startPos, startLoc);\n this.addExtra(node, \"rawValue\", value);\n this.addExtra(node, \"raw\", this.input.slice(startPos, this.state.end));\n node.value = value;\n this.next();\n return this.finishNode(node, type);\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n let val;\n this.expect(tt.parenL);\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.maybeInArrowParameters = true;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n this.state.inFSharpPipelineDirectBody = false;\n\n const innerStartPos = this.state.start;\n const innerStartLoc = this.state.startLoc;\n const exprList = [];\n const refShorthandDefaultPos = { start: 0 };\n const refNeedsArrowPos = { start: 0 };\n let first = true;\n let spreadStart;\n let optionalCommaStart;\n\n while (!this.match(tt.parenR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma, refNeedsArrowPos.start || null);\n if (this.match(tt.parenR)) {\n optionalCommaStart = this.state.start;\n break;\n }\n }\n\n if (this.match(tt.ellipsis)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n spreadStart = this.state.start;\n exprList.push(\n this.parseParenItem(\n this.parseRestBinding(),\n spreadNodeStartPos,\n spreadNodeStartLoc,\n ),\n );\n\n this.checkCommaAfterRest(charCodes.rightParenthesis);\n\n break;\n } else {\n exprList.push(\n this.parseMaybeAssign(\n false,\n refShorthandDefaultPos,\n this.parseParenItem,\n refNeedsArrowPos,\n ),\n );\n }\n }\n\n const innerEndPos = this.state.start;\n const innerEndLoc = this.state.startLoc;\n this.expect(tt.parenR);\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n let arrowNode = this.startNodeAt(startPos, startLoc);\n if (\n canBeArrow &&\n this.shouldParseArrow() &&\n (arrowNode = this.parseArrow(arrowNode))\n ) {\n this.checkYieldAwaitInDefaultParams();\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n for (const param of exprList) {\n if (param.extra && param.extra.parenthesized) {\n this.unexpected(param.extra.parenStart);\n }\n }\n\n this.parseArrowExpression(arrowNode, exprList, false);\n return arrowNode;\n }\n\n // We keep the old value if it isn't null, for cases like\n // (x = (yield)) => {}\n if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;\n if (oldAwaitPos !== -1) this.state.awaitPos = oldAwaitPos;\n\n if (!exprList.length) {\n this.unexpected(this.state.lastTokStart);\n }\n if (optionalCommaStart) this.unexpected(optionalCommaStart);\n if (spreadStart) this.unexpected(spreadStart);\n if (refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start);\n\n this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n\n if (!this.options.createParenthesizedExpressions) {\n this.addExtra(val, \"parenthesized\", true);\n this.addExtra(val, \"parenStart\", startPos);\n return val;\n }\n\n const parenExpression = this.startNodeAt(startPos, startLoc);\n parenExpression.expression = val;\n this.finishNode(parenExpression, \"ParenthesizedExpression\");\n return parenExpression;\n }\n\n shouldParseArrow(): boolean {\n return !this.canInsertSemicolon();\n }\n\n parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {\n if (this.eat(tt.arrow)) {\n return node;\n }\n }\n\n parseParenItem(\n node: N.Expression,\n startPos: number, // eslint-disable-line no-unused-vars\n startLoc: Position, // eslint-disable-line no-unused-vars\n ): N.Expression {\n return node;\n }\n\n // New's precedence is slightly tricky. It must allow its argument to\n // be a `[]` or dot subscript expression, but not a call — at least,\n // not without wrapping it in parentheses. Thus, it uses the noCalls\n // argument to parseSubscripts to prevent it from consuming the\n // argument list.\n\n parseNew(): N.NewExpression | N.MetaProperty {\n const node = this.startNode();\n\n let meta = this.startNode();\n this.next();\n meta = this.createIdentifier(meta, \"new\");\n\n if (this.eat(tt.dot)) {\n const metaProp = this.parseMetaProperty(node, meta, \"target\");\n\n if (!this.scope.inNonArrowFunction && !this.state.inClassProperty) {\n let error = \"new.target can only be used in functions\";\n\n if (this.hasPlugin(\"classProperties\")) {\n error += \" or class properties\";\n }\n\n this.raise(metaProp.start, error);\n }\n\n return metaProp;\n }\n\n node.callee = this.parseNoCallExpr();\n\n if (node.callee.type === \"Import\") {\n this.raise(node.callee.start, \"Cannot use new with import(...)\");\n } else if (\n node.callee.type === \"OptionalMemberExpression\" ||\n node.callee.type === \"OptionalCallExpression\"\n ) {\n this.raise(\n this.state.lastTokEnd,\n \"constructors in/after an Optional Chain are not allowed\",\n );\n } else if (this.eat(tt.questionDot)) {\n this.raise(\n this.state.start,\n \"constructors in/after an Optional Chain are not allowed\",\n );\n }\n\n this.parseNewArguments(node);\n return this.finishNode(node, \"NewExpression\");\n }\n\n parseNewArguments(node: N.NewExpression): void {\n if (this.eat(tt.parenL)) {\n const args = this.parseExprList(tt.parenR);\n this.toReferencedList(args);\n // $FlowFixMe (parseExprList should be all non-null in this case)\n node.arguments = args;\n } else {\n node.arguments = [];\n }\n }\n\n // Parse template expression.\n\n parseTemplateElement(isTagged: boolean): N.TemplateElement {\n const elem = this.startNode();\n if (this.state.value === null) {\n if (!isTagged) {\n // TODO: fix this\n this.raise(\n this.state.invalidTemplateEscapePosition || 0,\n \"Invalid escape sequence in template\",\n );\n } else {\n this.state.invalidTemplateEscapePosition = null;\n }\n }\n elem.value = {\n raw: this.input\n .slice(this.state.start, this.state.end)\n .replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.state.value,\n };\n this.next();\n elem.tail = this.match(tt.backQuote);\n return this.finishNode(elem, \"TemplateElement\");\n }\n\n parseTemplate(isTagged: boolean): N.TemplateLiteral {\n const node = this.startNode();\n this.next();\n node.expressions = [];\n let curElt = this.parseTemplateElement(isTagged);\n node.quasis = [curElt];\n while (!curElt.tail) {\n this.expect(tt.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(tt.braceR);\n node.quasis.push((curElt = this.parseTemplateElement(isTagged)));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\");\n }\n\n // Parse an object literal or binding pattern.\n\n parseObj<T: N.ObjectPattern | N.ObjectExpression>(\n isPattern: boolean,\n refShorthandDefaultPos?: ?Pos,\n ): T {\n const propHash: any = Object.create(null);\n let first = true;\n const node = this.startNode();\n\n node.properties = [];\n this.next();\n\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(tt.braceR)) {\n this.addExtra(node, \"trailingComma\", this.state.lastTokStart);\n this.next();\n break;\n }\n }\n\n const prop = this.parseObjectMember(isPattern, refShorthandDefaultPos);\n // $FlowIgnore RestElement will never be returned if !isPattern\n if (!isPattern) this.checkDuplicatedProto(prop, propHash);\n\n // $FlowIgnore\n if (prop.shorthand) {\n this.addExtra(prop, \"shorthand\", true);\n }\n\n node.properties.push(prop);\n }\n\n if (!this.match(tt.eq) && propHash.start !== undefined) {\n this.raise(propHash.start, \"Redefinition of __proto__ property\");\n }\n\n return this.finishNode(\n node,\n isPattern ? \"ObjectPattern\" : \"ObjectExpression\",\n );\n }\n\n isAsyncProp(prop: N.ObjectProperty): boolean {\n return (\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n prop.key.name === \"async\" &&\n (this.match(tt.name) ||\n this.match(tt.num) ||\n this.match(tt.string) ||\n this.match(tt.bracketL) ||\n this.state.type.keyword ||\n this.match(tt.star)) &&\n !this.hasPrecedingLineBreak()\n );\n }\n\n parseObjectMember(\n isPattern: boolean,\n refShorthandDefaultPos: ?Pos,\n ): N.ObjectMember | N.SpreadElement | N.RestElement {\n let decorators = [];\n if (this.match(tt.at)) {\n if (this.hasPlugin(\"decorators\")) {\n this.raise(\n this.state.start,\n \"Stage 2 decorators disallow object literal property decorators\",\n );\n }\n\n // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n // the call to this.parseDecorator\n while (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n }\n }\n\n const prop = this.startNode();\n let isGenerator = false;\n let isAsync = false;\n let startPos;\n let startLoc;\n\n if (this.match(tt.ellipsis)) {\n if (decorators.length) this.unexpected();\n if (isPattern) {\n this.next();\n // Don't use parseRestBinding() as we only allow Identifier here.\n prop.argument = this.parseIdentifier();\n this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n return this.finishNode(prop, \"RestElement\");\n }\n\n return this.parseSpread();\n }\n\n if (decorators.length) {\n prop.decorators = decorators;\n decorators = [];\n }\n\n prop.method = false;\n\n if (isPattern || refShorthandDefaultPos) {\n startPos = this.state.start;\n startLoc = this.state.startLoc;\n }\n\n if (!isPattern) {\n isGenerator = this.eat(tt.star);\n }\n\n const containsEsc = this.state.containsEsc;\n this.parsePropertyName(prop);\n\n if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.eat(tt.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n\n this.parseObjPropValue(\n prop,\n startPos,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n refShorthandDefaultPos,\n containsEsc,\n );\n\n return prop;\n }\n\n isGetterOrSetterMethod(prop: N.ObjectMethod, isPattern: boolean): boolean {\n return (\n !isPattern &&\n !prop.computed &&\n prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.match(tt.string) || // get \"string\"() {}\n this.match(tt.num) || // get 1() {}\n this.match(tt.bracketL) || // get [\"string\"]() {}\n this.match(tt.name) || // get foo() {}\n !!this.state.type.keyword) // get debugger() {}\n );\n }\n\n getGetterSetterExpectedParamCount(\n method: N.ObjectMethod | N.ClassMethod,\n ): number {\n return method.kind === \"get\" ? 0 : 1;\n }\n\n // get methods aren't allowed to have any parameters\n // set methods must have exactly 1 parameter which is not a rest parameter\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n const paramCount = this.getGetterSetterExpectedParamCount(method);\n const start = method.start;\n if (method.params.length !== paramCount) {\n if (method.kind === \"get\") {\n this.raise(start, \"getter must not have any formal parameters\");\n } else {\n this.raise(start, \"setter must have exactly one formal parameter\");\n }\n }\n\n if (\n method.kind === \"set\" &&\n method.params[method.params.length - 1].type === \"RestElement\"\n ) {\n this.raise(\n start,\n \"setter function argument must not be a rest parameter\",\n );\n }\n }\n\n parseObjectMethod(\n prop: N.ObjectMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n containsEsc: boolean,\n ): ?N.ObjectMethod {\n if (isAsync || isGenerator || this.match(tt.parenL)) {\n if (isPattern) this.unexpected();\n prop.kind = \"method\";\n prop.method = true;\n return this.parseMethod(\n prop,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n }\n\n if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) {\n if (isGenerator || isAsync) this.unexpected();\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n this.parseMethod(\n prop,\n /* isGenerator */ false,\n /* isAsync */ false,\n /* isConstructor */ false,\n false,\n \"ObjectMethod\",\n );\n this.checkGetterSetterParams(prop);\n return prop;\n }\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startPos: ?number,\n startLoc: ?Position,\n isPattern: boolean,\n refShorthandDefaultPos: ?Pos,\n ): ?N.ObjectProperty {\n prop.shorthand = false;\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern\n ? this.parseMaybeDefault(this.state.start, this.state.startLoc)\n : this.parseMaybeAssign(false, refShorthandDefaultPos);\n\n return this.finishNode(prop, \"ObjectProperty\");\n }\n\n if (!prop.computed && prop.key.type === \"Identifier\") {\n this.checkReservedWord(prop.key.name, prop.key.start, true, true);\n\n if (isPattern) {\n prop.value = this.parseMaybeDefault(\n startPos,\n startLoc,\n prop.key.__clone(),\n );\n } else if (this.match(tt.eq) && refShorthandDefaultPos) {\n if (!refShorthandDefaultPos.start) {\n refShorthandDefaultPos.start = this.state.start;\n }\n prop.value = this.parseMaybeDefault(\n startPos,\n startLoc,\n prop.key.__clone(),\n );\n } else {\n prop.value = prop.key.__clone();\n }\n prop.shorthand = true;\n\n return this.finishNode(prop, \"ObjectProperty\");\n }\n }\n\n parseObjPropValue(\n prop: any,\n startPos: ?number,\n startLoc: ?Position,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n refShorthandDefaultPos: ?Pos,\n containsEsc: boolean,\n ): void {\n const node =\n this.parseObjectMethod(\n prop,\n isGenerator,\n isAsync,\n isPattern,\n containsEsc,\n ) ||\n this.parseObjectProperty(\n prop,\n startPos,\n startLoc,\n isPattern,\n refShorthandDefaultPos,\n );\n\n if (!node) this.unexpected();\n\n // $FlowFixMe\n return node;\n }\n\n parsePropertyName(\n prop: N.ObjectOrClassMember | N.ClassMember | N.TsNamedTypeElementBase,\n ): N.Expression | N.Identifier {\n if (this.eat(tt.bracketL)) {\n (prop: $FlowSubtype<N.ObjectOrClassMember>).computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(tt.bracketR);\n } else {\n const oldInPropertyName = this.state.inPropertyName;\n this.state.inPropertyName = true;\n // We check if it's valid for it to be a private name when we push it.\n (prop: $FlowFixMe).key =\n this.match(tt.num) || this.match(tt.string)\n ? this.parseExprAtom()\n : this.parseMaybePrivateName();\n\n if (prop.key.type !== \"PrivateName\") {\n // ClassPrivateProperty is never computed, so we don't assign in that case.\n prop.computed = false;\n }\n\n this.state.inPropertyName = oldInPropertyName;\n }\n\n return prop.key;\n }\n\n // Initialize empty function node.\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: ?boolean): void {\n node.id = null;\n node.generator = false;\n node.async = !!isAsync;\n }\n\n // Parse object or class method.\n\n parseMethod<T: N.MethodLike>(\n node: T,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: string,\n inClassScope: boolean = false,\n ): T {\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n\n this.initFunction(node, isAsync);\n node.generator = !!isGenerator;\n const allowModifiers = isConstructor; // For TypeScript parameter properties\n this.scope.enter(\n functionFlags(isAsync, node.generator) |\n SCOPE_SUPER |\n (inClassScope ? SCOPE_CLASS : 0) |\n (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0),\n );\n this.parseFunctionParams((node: any), allowModifiers);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBodyAndFinish(node, type, true);\n this.scope.exit();\n\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return node;\n }\n\n // Parse arrow function expression.\n // If the parameters are provided, they will be converted to an\n // assignable list.\n parseArrowExpression(\n node: N.ArrowFunctionExpression,\n params: ?(N.Expression[]),\n isAsync: boolean,\n trailingCommaPos: ?number,\n ): N.ArrowFunctionExpression {\n this.scope.enter(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node, isAsync);\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = false;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n\n if (params) this.setArrowFunctionParameters(node, params, trailingCommaPos);\n this.parseFunctionBody(node, true);\n\n this.scope.exit();\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return this.finishNode(node, \"ArrowFunctionExpression\");\n }\n\n setArrowFunctionParameters(\n node: N.ArrowFunctionExpression,\n params: N.Expression[],\n trailingCommaPos: ?number,\n ): void {\n node.params = this.toAssignableList(\n params,\n true,\n \"arrow function parameters\",\n trailingCommaPos,\n );\n }\n\n isStrictBody(node: { body: N.BlockStatement }): boolean {\n const isBlockStatement = node.body.type === \"BlockStatement\";\n\n if (isBlockStatement && node.body.directives.length) {\n for (const directive of node.body.directives) {\n if (directive.value.value === \"use strict\") {\n return true;\n }\n }\n }\n\n return false;\n }\n\n parseFunctionBodyAndFinish(\n node: N.BodilessFunctionOrMethodBase,\n type: string,\n isMethod?: boolean = false,\n ): void {\n // $FlowIgnore (node is not bodiless if we get here)\n this.parseFunctionBody(node, false, isMethod);\n this.finishNode(node, type);\n }\n\n // Parse function body and check parameters.\n parseFunctionBody(\n node: N.Function,\n allowExpression: ?boolean,\n isMethod?: boolean = false,\n ): void {\n const isExpression = allowExpression && !this.match(tt.braceL);\n const oldStrict = this.state.strict;\n let useStrict = false;\n\n const oldInParameters = this.state.inParameters;\n this.state.inParameters = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign();\n this.checkParams(node, false, allowExpression, false);\n } else {\n const nonSimple = !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.state.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple) {\n // This logic is here to align the error location with the estree plugin\n const errorPos =\n // $FlowIgnore\n (node.kind === \"method\" || node.kind === \"constructor\") &&\n // $FlowIgnore\n !!node.key\n ? node.key.end\n : node.start;\n this.raise(\n errorPos,\n \"Illegal 'use strict' directive in function with non-simple parameter list\",\n );\n }\n }\n // Start a new scope with regard to labels\n // flag (restore them to their old value afterwards).\n const oldLabels = this.state.labels;\n this.state.labels = [];\n if (useStrict) this.state.strict = true;\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(\n node,\n !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple,\n allowExpression,\n !oldStrict && useStrict,\n );\n node.body = this.parseBlock(true, false);\n this.state.labels = oldLabels;\n }\n\n this.state.inParameters = oldInParameters;\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.state.strict && node.id) {\n this.checkLVal(\n node.id,\n BIND_OUTSIDE,\n undefined,\n \"function name\",\n undefined,\n !oldStrict && useStrict,\n );\n }\n this.state.strict = oldStrict;\n }\n\n isSimpleParamList(\n params: $ReadOnlyArray<N.Pattern | N.TSParameterProperty>,\n ): boolean {\n for (let i = 0, len = params.length; i < len; i++) {\n if (params[i].type !== \"Identifier\") return false;\n }\n return true;\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n // eslint-disable-next-line no-unused-vars\n isArrowFunction: ?boolean,\n strictModeChanged?: boolean = true,\n ): void {\n // $FlowIssue\n const nameHash: {} = Object.create(null);\n for (let i = 0; i < node.params.length; i++) {\n this.checkLVal(\n node.params[i],\n BIND_VAR,\n allowDuplicates ? null : nameHash,\n \"function parameter list\",\n undefined,\n strictModeChanged,\n );\n }\n }\n\n // Parses a comma-separated list of expressions, and returns them as\n // an array. `close` is the token type that ends the list, and\n // `allowEmpty` can be turned on to allow subsequent commas with\n // nothing in between them to be parsed as `null` (which is needed\n // for array literals).\n\n parseExprList(\n close: TokenType,\n allowEmpty?: boolean,\n refShorthandDefaultPos?: ?Pos,\n nodeForExtra?: ?N.Node,\n ): $ReadOnlyArray<?N.Expression> {\n const elts = [];\n let first = true;\n\n while (!this.eat(close)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.match(close)) {\n if (nodeForExtra) {\n this.addExtra(\n nodeForExtra,\n \"trailingComma\",\n this.state.lastTokStart,\n );\n }\n this.next();\n break;\n }\n }\n\n elts.push(this.parseExprListItem(allowEmpty, refShorthandDefaultPos));\n }\n return elts;\n }\n\n parseExprListItem(\n allowEmpty: ?boolean,\n refShorthandDefaultPos: ?Pos,\n refNeedsArrowPos: ?Pos,\n allowPlaceholder: ?boolean,\n ): ?N.Expression {\n let elt;\n if (allowEmpty && this.match(tt.comma)) {\n elt = null;\n } else if (this.match(tt.ellipsis)) {\n const spreadNodeStartPos = this.state.start;\n const spreadNodeStartLoc = this.state.startLoc;\n elt = this.parseParenItem(\n this.parseSpread(refShorthandDefaultPos, refNeedsArrowPos),\n spreadNodeStartPos,\n spreadNodeStartLoc,\n );\n } else if (this.match(tt.question)) {\n this.expectPlugin(\"partialApplication\");\n if (!allowPlaceholder) {\n this.raise(this.state.start, \"Unexpected argument placeholder\");\n }\n const node = this.startNode();\n this.next();\n elt = this.finishNode(node, \"ArgumentPlaceholder\");\n } else {\n elt = this.parseMaybeAssign(\n false,\n refShorthandDefaultPos,\n this.parseParenItem,\n refNeedsArrowPos,\n );\n }\n return elt;\n }\n\n // Parse the next token as an identifier. If `liberal` is true (used\n // when parsing properties), it will also convert keywords into\n // identifiers.\n // This shouldn't be used to parse the keywords of meta properties, since they\n // are not identifiers and cannot contain escape sequences.\n\n parseIdentifier(liberal?: boolean): N.Identifier {\n const node = this.startNode();\n const name = this.parseIdentifierName(node.start, liberal);\n\n return this.createIdentifier(node, name);\n }\n\n createIdentifier(node: N.Identifier, name: string): N.Identifier {\n node.name = name;\n node.loc.identifierName = name;\n\n return this.finishNode(node, \"Identifier\");\n }\n\n parseIdentifierName(pos: number, liberal?: boolean): string {\n let name: string;\n\n if (this.match(tt.name)) {\n name = this.state.value;\n } else if (this.state.type.keyword) {\n name = this.state.type.keyword;\n\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed\n // as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the\n // context-managing code already ignored the keyword\n if (\n (name === \"class\" || name === \"function\") &&\n (this.state.lastTokEnd !== this.state.lastTokStart + 1 ||\n this.input.charCodeAt(this.state.lastTokStart) !== charCodes.dot)\n ) {\n this.state.context.pop();\n }\n } else {\n throw this.unexpected();\n }\n\n if (liberal) {\n // If the current token is not used as a keyword, set its type to \"tt.name\".\n // This will prevent this.next() from throwing about unexpected escapes.\n this.state.type = tt.name;\n } else {\n this.checkReservedWord(\n name,\n this.state.start,\n !!this.state.type.keyword,\n false,\n );\n }\n\n this.next();\n\n return name;\n }\n\n checkReservedWord(\n word: string,\n startLoc: number,\n checkKeywords: boolean,\n isBinding: boolean,\n ): void {\n if (this.scope.inGenerator && word === \"yield\") {\n this.raise(\n startLoc,\n \"Can not use 'yield' as identifier inside a generator\",\n );\n return;\n }\n\n if (word === \"await\") {\n if (this.scope.inAsync) {\n this.raise(\n startLoc,\n \"Can not use 'await' as identifier inside an async function\",\n );\n return;\n }\n if (\n this.state.awaitPos === -1 &&\n (this.state.maybeInArrowParameters || this.isAwaitAllowed())\n ) {\n this.state.awaitPos = this.state.start;\n }\n }\n\n if (\n this.scope.inClass &&\n !this.scope.inNonArrowFunction &&\n word === \"arguments\"\n ) {\n this.raise(\n startLoc,\n \"'arguments' is not allowed in class field initializer\",\n );\n return;\n }\n if (checkKeywords && isKeyword(word)) {\n this.raise(startLoc, `Unexpected keyword '${word}'`);\n return;\n }\n\n const reservedTest = !this.state.strict\n ? isReservedWord\n : isBinding\n ? isStrictBindReservedWord\n : isStrictReservedWord;\n\n if (reservedTest(word, this.inModule)) {\n if (!this.scope.inAsync && word === \"await\") {\n this.raise(\n startLoc,\n \"Can not use keyword 'await' outside an async function\",\n );\n } else {\n this.raise(startLoc, `Unexpected reserved word '${word}'`);\n }\n }\n }\n\n isAwaitAllowed(): boolean {\n if (this.scope.inFunction) return this.scope.inAsync;\n if (this.options.allowAwaitOutsideFunction) return true;\n if (this.hasPlugin(\"topLevelAwait\")) return this.inModule;\n return false;\n }\n\n // Parses await expression inside async function.\n\n parseAwait(): N.AwaitExpression {\n const node = this.startNode();\n\n this.next();\n\n if (this.state.inParameters) {\n this.raise(\n node.start,\n \"await is not allowed in async function parameters\",\n );\n } else if (this.state.awaitPos === -1) {\n this.state.awaitPos = node.start;\n }\n if (this.eat(tt.star)) {\n this.raise(\n node.start,\n \"await* has been removed from the async functions proposal. Use Promise.all() instead.\",\n );\n }\n\n if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {\n if (\n this.hasPrecedingLineBreak() ||\n // All the following expressions are ambiguous:\n // await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``\n this.match(tt.plusMin) ||\n this.match(tt.parenL) ||\n this.match(tt.bracketL) ||\n this.match(tt.backQuote) ||\n // Sometimes the tokenizer generates tt.slash for regexps, and this is\n // handler by parseExprAtom\n this.match(tt.regexp) ||\n this.match(tt.slash) ||\n // This code could be parsed both as a modulo operator or as an intrinsic:\n // await %x(0)\n (this.hasPlugin(\"v8intrinsic\") && this.match(tt.modulo))\n ) {\n this.ambiguousScriptDifferentAst = true;\n } else {\n this.sawUnambiguousESM = true;\n }\n }\n\n if (!this.state.soloAwait) {\n node.argument = this.parseMaybeUnary();\n }\n\n return this.finishNode(node, \"AwaitExpression\");\n }\n\n // Parses yield expression inside generator.\n\n parseYield(noIn?: ?boolean): N.YieldExpression {\n const node = this.startNode();\n\n if (this.state.inParameters) {\n this.raise(node.start, \"yield is not allowed in generator parameters\");\n } else if (this.state.yieldPos === -1) {\n this.state.yieldPos = node.start;\n }\n\n this.next();\n if (\n this.match(tt.semi) ||\n (!this.match(tt.star) && !this.state.type.startsExpr) ||\n this.hasPrecedingLineBreak()\n ) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(tt.star);\n node.argument = this.parseMaybeAssign(noIn);\n }\n return this.finishNode(node, \"YieldExpression\");\n }\n\n // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n // of the infix operator `|>`.\n\n checkPipelineAtInfixOperator(left: N.Expression, leftStartPos: number) {\n if (this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\") {\n if (left.type === \"SequenceExpression\") {\n // Ensure that the pipeline head is not a comma-delimited\n // sequence expression.\n this.raise(\n leftStartPos,\n `Pipeline head should not be a comma-separated sequence expression`,\n );\n }\n }\n }\n\n parseSmartPipelineBody(\n childExpression: N.Expression,\n startPos: number,\n startLoc: Position,\n ): N.PipelineBody {\n const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression);\n\n this.checkSmartPipelineBodyEarlyErrors(\n childExpression,\n pipelineStyle,\n startPos,\n );\n\n return this.parseSmartPipelineBodyInStyle(\n childExpression,\n pipelineStyle,\n startPos,\n startLoc,\n );\n }\n\n checkSmartPipelineBodyEarlyErrors(\n childExpression: N.Expression,\n pipelineStyle: N.PipelineStyle,\n startPos: number,\n ): void {\n if (this.match(tt.arrow)) {\n // If the following token is invalidly `=>`, then throw a human-friendly error\n // instead of something like 'Unexpected token, expected \";\"'.\n throw this.raise(\n this.state.start,\n `Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized`,\n );\n } else if (\n pipelineStyle === \"PipelineTopicExpression\" &&\n childExpression.type === \"SequenceExpression\"\n ) {\n this.raise(\n startPos,\n `Pipeline body may not be a comma-separated sequence expression`,\n );\n }\n }\n\n parseSmartPipelineBodyInStyle(\n childExpression: N.Expression,\n pipelineStyle: N.PipelineStyle,\n startPos: number,\n startLoc: Position,\n ): N.PipelineBody {\n const bodyNode = this.startNodeAt(startPos, startLoc);\n switch (pipelineStyle) {\n case \"PipelineBareFunction\":\n bodyNode.callee = childExpression;\n break;\n case \"PipelineBareConstructor\":\n bodyNode.callee = childExpression.callee;\n break;\n case \"PipelineBareAwaitedFunction\":\n bodyNode.callee = childExpression.argument;\n break;\n case \"PipelineTopicExpression\":\n if (!this.topicReferenceWasUsedInCurrentTopicContext()) {\n this.raise(\n startPos,\n `Pipeline is in topic style but does not use topic reference`,\n );\n }\n bodyNode.expression = childExpression;\n break;\n default:\n throw new Error(\n `Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`,\n );\n }\n return this.finishNode(bodyNode, pipelineStyle);\n }\n\n checkSmartPipelineBodyStyle(expression: N.Expression): N.PipelineStyle {\n switch (expression.type) {\n default:\n return this.isSimpleReference(expression)\n ? \"PipelineBareFunction\"\n : \"PipelineTopicExpression\";\n }\n }\n\n isSimpleReference(expression: N.Expression): boolean {\n switch (expression.type) {\n case \"MemberExpression\":\n return (\n !expression.computed && this.isSimpleReference(expression.object)\n );\n case \"Identifier\":\n return true;\n default:\n return false;\n }\n }\n\n // Enable topic references from outer contexts within smart pipeline bodies.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references with the smartPipelines plugin. They then run a\n // callback, then they reset the parser to the old topic-context state that it\n // had before the function was called.\n\n withTopicPermittingContext<T>(callback: () => T): T {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Enable the use of the primary topic reference.\n maxNumOfResolvableTopics: 1,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n // Disable topic references from outer contexts within syntax constructs\n // such as the bodies of iteration statements.\n // The function modifies the parser's topic-context state to enable or disable\n // the use of topic references with the smartPipelines plugin. They then run a\n // callback, then they reset the parser to the old topic-context state that it\n // had before the function was called.\n\n withTopicForbiddingContext<T>(callback: () => T): T {\n const outerContextTopicState = this.state.topicContext;\n this.state.topicContext = {\n // Disable the use of the primary topic reference.\n maxNumOfResolvableTopics: 0,\n // Hide the use of any topic references from outer contexts.\n maxTopicIndex: null,\n };\n\n try {\n return callback();\n } finally {\n this.state.topicContext = outerContextTopicState;\n }\n }\n\n withSoloAwaitPermittingContext<T>(callback: () => T): T {\n const outerContextSoloAwaitState = this.state.soloAwait;\n this.state.soloAwait = true;\n\n try {\n return callback();\n } finally {\n this.state.soloAwait = outerContextSoloAwaitState;\n }\n }\n\n // Register the use of a primary topic reference (`#`) within the current\n // topic context.\n registerTopicReference(): void {\n this.state.topicContext.maxTopicIndex = 0;\n }\n\n primaryTopicReferenceIsAllowedInCurrentTopicContext(): boolean {\n return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n }\n\n topicReferenceWasUsedInCurrentTopicContext(): boolean {\n return (\n this.state.topicContext.maxTopicIndex != null &&\n this.state.topicContext.maxTopicIndex >= 0\n );\n }\n\n parseFSharpPipelineBody(prec: number, noIn: ?boolean): N.Expression {\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n\n this.state.potentialArrowAt = this.state.start;\n const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n this.state.inFSharpPipelineDirectBody = true;\n\n const ret = this.parseExprOp(\n this.parseMaybeUnary(),\n startPos,\n startLoc,\n prec,\n noIn,\n );\n\n this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n return ret;\n }\n}\n","// @flow\n\nimport * as N from \"../types\";\nimport { types as tt, type TokenType } from \"../tokenizer/types\";\nimport ExpressionParser from \"./expression\";\nimport {\n isIdentifierChar,\n isIdentifierStart,\n keywordRelationalOperator,\n} from \"../util/identifier\";\nimport { lineBreak } from \"../util/whitespace\";\nimport * as charCodes from \"charcodes\";\nimport {\n BIND_CLASS,\n BIND_LEXICAL,\n BIND_VAR,\n BIND_FUNCTION,\n functionFlags,\n SCOPE_CLASS,\n SCOPE_OTHER,\n SCOPE_SIMPLE_CATCH,\n SCOPE_SUPER,\n type BindingTypes,\n} from \"../util/scopeflags\";\n\nconst loopLabel = { kind: \"loop\" },\n switchLabel = { kind: \"switch\" };\n\nconst FUNC_NO_FLAGS = 0b000,\n FUNC_STATEMENT = 0b001,\n FUNC_HANGING_STATEMENT = 0b010,\n FUNC_NULLABLE_ID = 0b100;\n\nexport default class StatementParser extends ExpressionParser {\n // ### Statement parsing\n\n // Parse a program. Initializes the parser, reads any number of\n // statements, and wraps them in a Program node. Optionally takes a\n // `program` argument. If present, the statements will be appended\n // to its body instead of creating a new node.\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n program.sourceType = this.options.sourceType;\n\n program.interpreter = this.parseInterpreterDirective();\n\n this.parseBlockBody(program, true, true, tt.eof);\n\n if (\n this.inModule &&\n !this.options.allowUndeclaredExports &&\n this.scope.undefinedExports.size > 0\n ) {\n for (const [name] of Array.from(this.scope.undefinedExports)) {\n const pos = this.scope.undefinedExports.get(name);\n // $FlowIssue\n this.raise(pos, `Export '${name}' is not defined`);\n }\n }\n\n file.program = this.finishNode(program, \"Program\");\n file.comments = this.state.comments;\n\n if (this.options.tokens) file.tokens = this.state.tokens;\n\n return this.finishNode(file, \"File\");\n }\n\n // TODO\n\n stmtToDirective(stmt: N.Statement): N.Directive {\n const expr = stmt.expression;\n\n const directiveLiteral = this.startNodeAt(expr.start, expr.loc.start);\n const directive = this.startNodeAt(stmt.start, stmt.loc.start);\n\n const raw = this.input.slice(expr.start, expr.end);\n const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n this.addExtra(directiveLiteral, \"raw\", raw);\n this.addExtra(directiveLiteral, \"rawValue\", val);\n\n directive.value = this.finishNodeAt(\n directiveLiteral,\n \"DirectiveLiteral\",\n expr.end,\n expr.loc.end,\n );\n\n return this.finishNodeAt(directive, \"Directive\", stmt.end, stmt.loc.end);\n }\n\n parseInterpreterDirective(): N.InterpreterDirective | null {\n if (!this.match(tt.interpreterDirective)) {\n return null;\n }\n\n const node = this.startNode();\n node.value = this.state.value;\n this.next();\n return this.finishNode(node, \"InterpreterDirective\");\n }\n\n isLet(context: ?string): boolean {\n if (!this.isContextual(\"let\")) {\n return false;\n }\n const next = this.nextTokenStart();\n const nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === charCodes.leftSquareBracket) return true;\n if (context) return false;\n\n if (nextCh === charCodes.leftCurlyBrace) return true;\n\n if (isIdentifierStart(nextCh)) {\n let pos = next + 1;\n while (isIdentifierChar(this.input.charCodeAt(pos))) {\n ++pos;\n }\n const ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) return true;\n }\n return false;\n }\n\n // Parse a single statement.\n //\n // If expecting a statement and finding a slash operator, parse a\n // regular expression literal. This is to handle cases like\n // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n // does not help.\n\n parseStatement(context: ?string, topLevel?: boolean): N.Statement {\n if (this.match(tt.at)) {\n this.parseDecorators(true);\n }\n return this.parseStatementContent(context, topLevel);\n }\n\n parseStatementContent(context: ?string, topLevel: ?boolean): N.Statement {\n let starttype = this.state.type;\n const node = this.startNode();\n let kind;\n\n if (this.isLet(context)) {\n starttype = tt._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break:\n case tt._continue:\n // $FlowFixMe\n return this.parseBreakContinueStatement(node, starttype.keyword);\n case tt._debugger:\n return this.parseDebuggerStatement(node);\n case tt._do:\n return this.parseDoStatement(node);\n case tt._for:\n return this.parseForStatement(node);\n case tt._function:\n if (this.lookaheadCharCode() === charCodes.dot) break;\n if (context) {\n if (this.state.strict) {\n this.raise(\n this.state.start,\n \"In strict mode code, functions can only be declared at top level or inside a block\",\n );\n } else if (context !== \"if\" && context !== \"label\") {\n this.raise(\n this.state.start,\n \"In non-strict mode code, functions can only be declared at top level, \" +\n \"inside a block, or as the body of an if statement\",\n );\n }\n }\n return this.parseFunctionStatement(node, false, !context);\n\n case tt._class:\n if (context) this.unexpected();\n return this.parseClass(node, true);\n\n case tt._if:\n return this.parseIfStatement(node);\n case tt._return:\n return this.parseReturnStatement(node);\n case tt._switch:\n return this.parseSwitchStatement(node);\n case tt._throw:\n return this.parseThrowStatement(node);\n case tt._try:\n return this.parseTryStatement(node);\n\n case tt._const:\n case tt._var:\n kind = kind || this.state.value;\n if (context && kind !== \"var\") {\n this.raise(\n this.state.start,\n \"Lexical declaration cannot appear in a single-statement context\",\n );\n }\n return this.parseVarStatement(node, kind);\n\n case tt._while:\n return this.parseWhileStatement(node);\n case tt._with:\n return this.parseWithStatement(node);\n case tt.braceL:\n return this.parseBlock();\n case tt.semi:\n return this.parseEmptyStatement(node);\n case tt._export:\n case tt._import: {\n const nextTokenCharCode = this.lookaheadCharCode();\n if (\n nextTokenCharCode === charCodes.leftParenthesis ||\n nextTokenCharCode === charCodes.dot\n ) {\n break;\n }\n\n if (!this.options.allowImportExportEverywhere && !topLevel) {\n this.raise(\n this.state.start,\n \"'import' and 'export' may only appear at the top level\",\n );\n }\n\n this.next();\n\n let result;\n if (starttype === tt._import) {\n result = this.parseImport(node);\n\n if (\n result.type === \"ImportDeclaration\" &&\n (!result.importKind || result.importKind === \"value\")\n ) {\n this.sawUnambiguousESM = true;\n }\n } else {\n result = this.parseExport(node);\n\n if (\n (result.type === \"ExportNamedDeclaration\" &&\n (!result.exportKind || result.exportKind === \"value\")) ||\n (result.type === \"ExportAllDeclaration\" &&\n (!result.exportKind || result.exportKind === \"value\")) ||\n result.type === \"ExportDefaultDeclaration\"\n ) {\n this.sawUnambiguousESM = true;\n }\n }\n\n this.assertModuleNodeAllowed(node);\n\n return result;\n }\n\n default: {\n if (this.isAsyncFunction()) {\n if (context) {\n this.raise(\n this.state.start,\n \"Async functions can only be declared at the top level or inside a block\",\n );\n }\n this.next();\n return this.parseFunctionStatement(node, true, !context);\n }\n }\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const maybeName = this.state.value;\n const expr = this.parseExpression();\n\n if (\n starttype === tt.name &&\n expr.type === \"Identifier\" &&\n this.eat(tt.colon)\n ) {\n return this.parseLabeledStatement(node, maybeName, expr, context);\n } else {\n return this.parseExpressionStatement(node, expr);\n }\n }\n\n assertModuleNodeAllowed(node: N.Node): void {\n if (!this.options.allowImportExportEverywhere && !this.inModule) {\n this.raise(\n node.start,\n `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n {\n code: \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\",\n },\n );\n }\n }\n\n takeDecorators(node: N.HasDecorators): void {\n const decorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n if (decorators.length) {\n node.decorators = decorators;\n this.resetStartLocationFromNode(node, decorators[0]);\n this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];\n }\n }\n\n canHaveLeadingDecorator(): boolean {\n return this.match(tt._class);\n }\n\n parseDecorators(allowExport?: boolean): void {\n const currentContextDecorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n while (this.match(tt.at)) {\n const decorator = this.parseDecorator();\n currentContextDecorators.push(decorator);\n }\n\n if (this.match(tt._export)) {\n if (!allowExport) {\n this.unexpected();\n }\n\n if (\n this.hasPlugin(\"decorators\") &&\n !this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")\n ) {\n this.raise(\n this.state.start,\n \"Using the export keyword between a decorator and a class is not allowed. \" +\n \"Please use `export @dec class` instead.\",\n );\n }\n } else if (!this.canHaveLeadingDecorator()) {\n throw this.raise(\n this.state.start,\n \"Leading decorators must be attached to a class declaration\",\n );\n }\n }\n\n parseDecorator(): N.Decorator {\n this.expectOnePlugin([\"decorators-legacy\", \"decorators\"]);\n\n const node = this.startNode();\n this.next();\n\n if (this.hasPlugin(\"decorators\")) {\n // Every time a decorator class expression is evaluated, a new empty array is pushed onto the stack\n // So that the decorators of any nested class expressions will be dealt with separately\n this.state.decoratorStack.push([]);\n\n const startPos = this.state.start;\n const startLoc = this.state.startLoc;\n let expr: N.Expression;\n\n if (this.eat(tt.parenL)) {\n expr = this.parseExpression();\n this.expect(tt.parenR);\n } else {\n expr = this.parseIdentifier(false);\n\n while (this.eat(tt.dot)) {\n const node = this.startNodeAt(startPos, startLoc);\n node.object = expr;\n node.property = this.parseIdentifier(true);\n node.computed = false;\n expr = this.finishNode(node, \"MemberExpression\");\n }\n }\n\n node.expression = this.parseMaybeDecoratorArguments(expr);\n this.state.decoratorStack.pop();\n } else {\n node.expression = this.parseExprSubscripts();\n }\n return this.finishNode(node, \"Decorator\");\n }\n\n parseMaybeDecoratorArguments(expr: N.Expression): N.Expression {\n if (this.eat(tt.parenL)) {\n const node = this.startNodeAtNode(expr);\n node.callee = expr;\n node.arguments = this.parseCallExpressionArguments(tt.parenR, false);\n this.toReferencedList(node.arguments);\n return this.finishNode(node, \"CallExpression\");\n }\n\n return expr;\n }\n\n parseBreakContinueStatement(\n node: N.BreakStatement | N.ContinueStatement,\n keyword: string,\n ): N.BreakStatement | N.ContinueStatement {\n const isBreak = keyword === \"break\";\n this.next();\n\n if (this.isLineTerminator()) {\n node.label = null;\n } else {\n node.label = this.parseIdentifier();\n this.semicolon();\n }\n\n this.verifyBreakContinue(node, keyword);\n\n return this.finishNode(\n node,\n isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n );\n }\n\n verifyBreakContinue(\n node: N.BreakStatement | N.ContinueStatement,\n keyword: string,\n ) {\n const isBreak = keyword === \"break\";\n let i;\n for (i = 0; i < this.state.labels.length; ++i) {\n const lab = this.state.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break;\n if (node.label && isBreak) break;\n }\n }\n if (i === this.state.labels.length) {\n this.raise(node.start, \"Unsyntactic \" + keyword);\n }\n }\n\n parseDebuggerStatement(node: N.DebuggerStatement): N.DebuggerStatement {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\");\n }\n\n parseHeaderExpression(): N.Expression {\n this.expect(tt.parenL);\n const val = this.parseExpression();\n this.expect(tt.parenR);\n return val;\n }\n\n parseDoStatement(node: N.DoWhileStatement): N.DoWhileStatement {\n this.next();\n this.state.labels.push(loopLabel);\n\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse the loop body's body.\n this.parseStatement(\"do\"),\n );\n\n this.state.labels.pop();\n\n this.expect(tt._while);\n node.test = this.parseHeaderExpression();\n this.eat(tt.semi);\n return this.finishNode(node, \"DoWhileStatement\");\n }\n\n // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n // loop is non-trivial. Basically, we have to parse the init `var`\n // statement or expression, disallowing the `in` operator (see\n // the second parameter to `parseExpression`), and then check\n // whether the next token is `in` or `of`. When there is no init\n // part (semicolon immediately after the opening parenthesis), it\n // is a regular `for` loop.\n\n parseForStatement(node: N.Node): N.ForLike {\n this.next();\n this.state.labels.push(loopLabel);\n\n let awaitAt = -1;\n if (this.isAwaitAllowed() && this.eatContextual(\"await\")) {\n awaitAt = this.state.lastTokStart;\n }\n this.scope.enter(SCOPE_OTHER);\n this.expect(tt.parenL);\n\n if (this.match(tt.semi)) {\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, null);\n }\n\n const isLet = this.isLet();\n if (this.match(tt._var) || this.match(tt._const) || isLet) {\n const init = this.startNode();\n const kind = isLet ? \"let\" : this.state.value;\n this.next();\n this.parseVar(init, true, kind);\n this.finishNode(init, \"VariableDeclaration\");\n\n if (\n (this.match(tt._in) || this.isContextual(\"of\")) &&\n init.declarations.length === 1\n ) {\n return this.parseForIn(node, init, awaitAt);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n\n const refShorthandDefaultPos = { start: 0 };\n const init = this.parseExpression(true, refShorthandDefaultPos);\n if (this.match(tt._in) || this.isContextual(\"of\")) {\n const description = this.isContextual(\"of\")\n ? \"for-of statement\"\n : \"for-in statement\";\n this.toAssignable(init, undefined, description);\n this.checkLVal(init, undefined, undefined, description);\n return this.parseForIn(node, init, awaitAt);\n } else if (refShorthandDefaultPos.start) {\n this.unexpected(refShorthandDefaultPos.start);\n }\n if (awaitAt > -1) {\n this.unexpected(awaitAt);\n }\n return this.parseFor(node, init);\n }\n\n parseFunctionStatement(\n node: N.FunctionDeclaration,\n isAsync?: boolean,\n declarationPosition?: boolean,\n ): N.FunctionDeclaration {\n this.next();\n return this.parseFunction(\n node,\n FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT),\n isAsync,\n );\n }\n\n parseIfStatement(node: N.IfStatement): N.IfStatement {\n this.next();\n node.test = this.parseHeaderExpression();\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\");\n }\n\n parseReturnStatement(node: N.ReturnStatement): N.ReturnStatement {\n if (!this.scope.inFunction && !this.options.allowReturnOutsideFunction) {\n this.raise(this.state.start, \"'return' outside of function\");\n }\n\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.isLineTerminator()) {\n node.argument = null;\n } else {\n node.argument = this.parseExpression();\n this.semicolon();\n }\n\n return this.finishNode(node, \"ReturnStatement\");\n }\n\n parseSwitchStatement(node: N.SwitchStatement): N.SwitchStatement {\n this.next();\n node.discriminant = this.parseHeaderExpression();\n const cases = (node.cases = []);\n this.expect(tt.braceL);\n this.state.labels.push(switchLabel);\n this.scope.enter(SCOPE_OTHER);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur;\n for (let sawDefault; !this.match(tt.braceR); ) {\n if (this.match(tt._case) || this.match(tt._default)) {\n const isCase = this.match(tt._case);\n if (cur) this.finishNode(cur, \"SwitchCase\");\n cases.push((cur = this.startNode()));\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) {\n this.raise(this.state.lastTokStart, \"Multiple default clauses\");\n }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(tt.colon);\n } else {\n if (cur) {\n cur.consequent.push(this.parseStatement(null));\n } else {\n this.unexpected();\n }\n }\n }\n this.scope.exit();\n if (cur) this.finishNode(cur, \"SwitchCase\");\n this.next(); // Closing brace\n this.state.labels.pop();\n return this.finishNode(node, \"SwitchStatement\");\n }\n\n parseThrowStatement(node: N.ThrowStatement): N.ThrowStatement {\n this.next();\n if (\n lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))\n ) {\n this.raise(this.state.lastTokEnd, \"Illegal newline after throw\");\n }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\");\n }\n\n parseTryStatement(node: N.TryStatement): N.TryStatement {\n this.next();\n\n node.block = this.parseBlock();\n node.handler = null;\n\n if (this.match(tt._catch)) {\n const clause = this.startNode();\n this.next();\n if (this.match(tt.parenL)) {\n this.expect(tt.parenL);\n clause.param = this.parseBindingAtom();\n const simple = clause.param.type === \"Identifier\";\n this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLVal(clause.param, BIND_LEXICAL, null, \"catch clause\");\n this.expect(tt.parenR);\n } else {\n clause.param = null;\n this.scope.enter(SCOPE_OTHER);\n }\n\n clause.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the function body. They are permitted in function\n // default-parameter expressions, which are part of the outer context,\n // outside of the function body.\n this.withTopicForbiddingContext(() =>\n // Parse the catch clause's body.\n this.parseBlock(false, false),\n );\n this.scope.exit();\n\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n if (!node.handler && !node.finalizer) {\n this.raise(node.start, \"Missing catch or finally clause\");\n }\n\n return this.finishNode(node, \"TryStatement\");\n }\n\n parseVarStatement(\n node: N.VariableDeclaration,\n kind: \"var\" | \"let\" | \"const\",\n ): N.VariableDeclaration {\n this.next();\n this.parseVar(node, false, kind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\");\n }\n\n parseWhileStatement(node: N.WhileStatement): N.WhileStatement {\n this.next();\n node.test = this.parseHeaderExpression();\n this.state.labels.push(loopLabel);\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(\"while\"),\n );\n\n this.state.labels.pop();\n\n return this.finishNode(node, \"WhileStatement\");\n }\n\n parseWithStatement(node: N.WithStatement): N.WithStatement {\n if (this.state.strict) {\n this.raise(this.state.start, \"'with' in strict mode\");\n }\n this.next();\n node.object = this.parseHeaderExpression();\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the function body.\n // They are permitted in function default-parameter expressions, which are\n // part of the outer context, outside of the function body.\n this.withTopicForbiddingContext(() =>\n // Parse the statement body.\n this.parseStatement(\"with\"),\n );\n\n return this.finishNode(node, \"WithStatement\");\n }\n\n parseEmptyStatement(node: N.EmptyStatement): N.EmptyStatement {\n this.next();\n return this.finishNode(node, \"EmptyStatement\");\n }\n\n parseLabeledStatement(\n node: N.LabeledStatement,\n maybeName: string,\n expr: N.Identifier,\n context: ?string,\n ): N.LabeledStatement {\n for (const label of this.state.labels) {\n if (label.name === maybeName) {\n this.raise(expr.start, `Label '${maybeName}' is already declared`);\n }\n }\n\n const kind = this.state.type.isLoop\n ? \"loop\"\n : this.match(tt._switch)\n ? \"switch\"\n : null;\n for (let i = this.state.labels.length - 1; i >= 0; i--) {\n const label = this.state.labels[i];\n if (label.statementStart === node.start) {\n label.statementStart = this.state.start;\n label.kind = kind;\n } else {\n break;\n }\n }\n\n this.state.labels.push({\n name: maybeName,\n kind: kind,\n statementStart: this.state.start,\n });\n node.body = this.parseStatement(\n context\n ? context.indexOf(\"label\") === -1\n ? context + \"label\"\n : context\n : \"label\",\n );\n\n this.state.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\");\n }\n\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n ): N.Statement {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\");\n }\n\n // Parse a semicolon-enclosed block of statements, handling `\"use\n // strict\"` declarations when `allowStrict` is true (used for\n // function bodies).\n\n parseBlock(\n allowDirectives?: boolean = false,\n createNewLexicalScope?: boolean = true,\n ): N.BlockStatement {\n const node = this.startNode();\n this.expect(tt.braceL);\n if (createNewLexicalScope) {\n this.scope.enter(SCOPE_OTHER);\n }\n this.parseBlockBody(node, allowDirectives, false, tt.braceR);\n if (createNewLexicalScope) {\n this.scope.exit();\n }\n return this.finishNode(node, \"BlockStatement\");\n }\n\n isValidDirective(stmt: N.Statement): boolean {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"StringLiteral\" &&\n !stmt.expression.extra.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: ?boolean,\n topLevel: boolean,\n end: TokenType,\n ): void {\n const body = (node.body = []);\n const directives = (node.directives = []);\n this.parseBlockOrModuleBlockBody(\n body,\n allowDirectives ? directives : undefined,\n topLevel,\n end,\n );\n }\n\n // Undefined directives means that directives are not allowed.\n parseBlockOrModuleBlockBody(\n body: N.Statement[],\n directives: ?(N.Directive[]),\n topLevel: boolean,\n end: TokenType,\n ): void {\n let parsedNonDirective = false;\n let oldStrict;\n let octalPosition;\n\n while (!this.eat(end)) {\n if (!parsedNonDirective && this.state.containsOctal && !octalPosition) {\n octalPosition = this.state.octalPosition;\n }\n\n const stmt = this.parseStatement(null, topLevel);\n\n if (directives && !parsedNonDirective && this.isValidDirective(stmt)) {\n const directive = this.stmtToDirective(stmt);\n directives.push(directive);\n\n if (oldStrict === undefined && directive.value.value === \"use strict\") {\n oldStrict = this.state.strict;\n this.setStrict(true);\n\n if (octalPosition) {\n this.raise(octalPosition, \"Octal literal in strict mode\");\n }\n }\n\n continue;\n }\n\n parsedNonDirective = true;\n body.push(stmt);\n }\n\n if (oldStrict === false) {\n this.setStrict(false);\n }\n }\n\n // Parse a regular `for` loop. The disambiguation code in\n // `parseStatement` will already have parsed the init statement or\n // expression.\n\n parseFor(\n node: N.ForStatement,\n init: ?(N.VariableDeclaration | N.Expression),\n ): N.ForStatement {\n node.init = init;\n this.expect(tt.semi);\n node.test = this.match(tt.semi) ? null : this.parseExpression();\n this.expect(tt.semi);\n node.update = this.match(tt.parenR) ? null : this.parseExpression();\n this.expect(tt.parenR);\n\n node.body =\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the loop body. They are permitted in test expressions,\n // outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse the loop body.\n this.parseStatement(\"for\"),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, \"ForStatement\");\n }\n\n // Parse a `for`/`in` and `for`/`of` loop, which are almost\n // same from parser's perspective.\n\n parseForIn(\n node: N.ForInOf,\n init: N.VariableDeclaration | N.AssignmentPattern,\n awaitAt: number,\n ): N.ForInOf {\n const isForIn = this.match(tt._in);\n this.next();\n\n if (isForIn) {\n if (awaitAt > -1) this.unexpected(awaitAt);\n } else {\n node.await = awaitAt > -1;\n }\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (!isForIn ||\n this.state.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\")\n ) {\n this.raise(\n init.start,\n `${\n isForIn ? \"for-in\" : \"for-of\"\n } loop variable declaration may not have an initializer`,\n );\n } else if (init.type === \"AssignmentPattern\") {\n this.raise(init.start, \"Invalid left-hand side in for-loop\");\n }\n\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(tt.parenR);\n\n node.body =\n // For the smartPipelines plugin:\n // Disable topic references from outer contexts within the loop body.\n // They are permitted in test expressions, outside of the loop body.\n this.withTopicForbiddingContext(() =>\n // Parse loop body.\n this.parseStatement(\"for\"),\n );\n\n this.scope.exit();\n this.state.labels.pop();\n\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n }\n\n // Parse a list of variable declarations.\n\n parseVar(\n node: N.VariableDeclaration,\n isFor: boolean,\n kind: \"var\" | \"let\" | \"const\",\n ): N.VariableDeclaration {\n const declarations = (node.declarations = []);\n const isTypescript = this.hasPlugin(\"typescript\");\n node.kind = kind;\n for (;;) {\n const decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else {\n if (\n kind === \"const\" &&\n !(this.match(tt._in) || this.isContextual(\"of\"))\n ) {\n // `const` with no initializer is allowed in TypeScript.\n // It could be a declaration like `const x: number;`.\n if (!isTypescript) {\n this.unexpected();\n }\n } else if (\n decl.id.type !== \"Identifier\" &&\n !(isFor && (this.match(tt._in) || this.isContextual(\"of\")))\n ) {\n this.raise(\n this.state.lastTokEnd,\n \"Complex binding patterns require an initialization value\",\n );\n }\n decl.init = null;\n }\n declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(tt.comma)) break;\n }\n return node;\n }\n\n parseVarId(decl: N.VariableDeclarator, kind: \"var\" | \"let\" | \"const\"): void {\n decl.id = this.parseBindingAtom();\n this.checkLVal(\n decl.id,\n kind === \"var\" ? BIND_VAR : BIND_LEXICAL,\n undefined,\n \"variable declaration\",\n kind !== \"var\",\n );\n }\n\n // Parse a function declaration or literal (depending on the\n // `isStatement` parameter).\n\n parseFunction<T: N.NormalFunction>(\n node: T,\n statement?: number = FUNC_NO_FLAGS,\n isAsync?: boolean = false,\n ): T {\n const isStatement = statement & FUNC_STATEMENT;\n const isHangingStatement = statement & FUNC_HANGING_STATEMENT;\n const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);\n\n this.initFunction(node, isAsync);\n\n if (this.match(tt.star) && isHangingStatement) {\n this.raise(\n this.state.start,\n \"Generators can only be declared at the top level or inside a block\",\n );\n }\n node.generator = this.eat(tt.star);\n\n if (isStatement) {\n node.id = this.parseFunctionId(requireId);\n }\n\n const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n const oldInClassProperty = this.state.inClassProperty;\n const oldYieldPos = this.state.yieldPos;\n const oldAwaitPos = this.state.awaitPos;\n this.state.maybeInArrowParameters = false;\n this.state.inClassProperty = false;\n this.state.yieldPos = -1;\n this.state.awaitPos = -1;\n this.scope.enter(functionFlags(node.async, node.generator));\n\n if (!isStatement) {\n node.id = this.parseFunctionId();\n }\n\n this.parseFunctionParams(node);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the function body. They are permitted in test\n // expressions, outside of the function body.\n this.withTopicForbiddingContext(() => {\n // Parse the function body.\n this.parseFunctionBodyAndFinish(\n node,\n isStatement ? \"FunctionDeclaration\" : \"FunctionExpression\",\n );\n });\n\n this.scope.exit();\n\n if (isStatement && !isHangingStatement) {\n // We need to register this _after_ parsing the function body\n // because of TypeScript body-less function declarations,\n // which shouldn't be added to the scope.\n this.registerFunctionStatementId(node);\n }\n\n this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n this.state.inClassProperty = oldInClassProperty;\n this.state.yieldPos = oldYieldPos;\n this.state.awaitPos = oldAwaitPos;\n\n return node;\n }\n\n parseFunctionId(requireId?: boolean): ?N.Identifier {\n return requireId || this.match(tt.name) ? this.parseIdentifier() : null;\n }\n\n parseFunctionParams(node: N.Function, allowModifiers?: boolean): void {\n const oldInParameters = this.state.inParameters;\n this.state.inParameters = true;\n\n this.expect(tt.parenL);\n node.params = this.parseBindingList(\n tt.parenR,\n charCodes.rightParenthesis,\n /* allowEmpty */ false,\n allowModifiers,\n );\n\n this.state.inParameters = oldInParameters;\n this.checkYieldAwaitInDefaultParams();\n }\n\n registerFunctionStatementId(node: N.Function): void {\n if (!node.id) return;\n\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.scope.declareName(\n node.id.name,\n this.state.strict || node.generator || node.async\n ? this.scope.treatFunctionsAsVar\n ? BIND_VAR\n : BIND_LEXICAL\n : BIND_FUNCTION,\n node.id.start,\n );\n }\n\n // Parse a class declaration or literal (depending on the\n // `isStatement` parameter).\n\n parseClass<T: N.Class>(\n node: T,\n isStatement: /* T === ClassDeclaration */ boolean,\n optionalId?: boolean,\n ): T {\n this.next();\n this.takeDecorators(node);\n\n // A class definition is always strict mode code.\n const oldStrict = this.state.strict;\n this.state.strict = true;\n\n this.parseClassId(node, isStatement, optionalId);\n this.parseClassSuper(node);\n node.body = this.parseClassBody(!!node.superClass);\n\n this.state.strict = oldStrict;\n\n return this.finishNode(\n node,\n isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n );\n }\n\n isClassProperty(): boolean {\n return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n }\n\n isClassMethod(): boolean {\n return this.match(tt.parenL);\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return (\n !method.computed &&\n !method.static &&\n (method.key.name === \"constructor\" || // Identifier\n method.key.value === \"constructor\") // String literal\n );\n }\n\n parseClassBody(constructorAllowsSuper: boolean): N.ClassBody {\n this.state.classLevel++;\n\n const state = { hadConstructor: false };\n let decorators: N.Decorator[] = [];\n const classBody: N.ClassBody = this.startNode();\n classBody.body = [];\n\n this.expect(tt.braceL);\n\n // For the smartPipelines plugin: Disable topic references from outer\n // contexts within the class body. They are permitted in test expressions,\n // outside of the class body.\n this.withTopicForbiddingContext(() => {\n while (!this.eat(tt.braceR)) {\n if (this.eat(tt.semi)) {\n if (decorators.length > 0) {\n throw this.raise(\n this.state.lastTokEnd,\n \"Decorators must not be followed by a semicolon\",\n );\n }\n continue;\n }\n\n if (this.match(tt.at)) {\n decorators.push(this.parseDecorator());\n continue;\n }\n\n const member = this.startNode();\n\n // steal the decorators if there are any\n if (decorators.length) {\n member.decorators = decorators;\n this.resetStartLocationFromNode(member, decorators[0]);\n decorators = [];\n }\n\n this.parseClassMember(classBody, member, state, constructorAllowsSuper);\n\n if (\n member.kind === \"constructor\" &&\n member.decorators &&\n member.decorators.length > 0\n ) {\n this.raise(\n member.start,\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n );\n }\n }\n });\n\n if (decorators.length) {\n throw this.raise(\n this.state.start,\n \"You have trailing decorators with no method\",\n );\n }\n\n this.state.classLevel--;\n\n return this.finishNode(classBody, \"ClassBody\");\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: N.ClassMember,\n state: { hadConstructor: boolean },\n constructorAllowsSuper: boolean,\n ): void {\n let isStatic = false;\n const containsEsc = this.state.containsEsc;\n\n if (this.match(tt.name) && this.state.value === \"static\") {\n const key = this.parseIdentifier(true); // eats 'static'\n\n if (this.isClassMethod()) {\n const method: N.ClassMethod = (member: any);\n\n // a method named 'static'\n method.kind = \"method\";\n method.computed = false;\n method.key = key;\n method.static = false;\n this.pushClassMethod(\n classBody,\n method,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n return;\n } else if (this.isClassProperty()) {\n const prop: N.ClassProperty = (member: any);\n\n // a property named 'static'\n prop.computed = false;\n prop.key = key;\n prop.static = false;\n classBody.body.push(this.parseClassProperty(prop));\n return;\n } else if (containsEsc) {\n throw this.unexpected();\n }\n\n // otherwise something static\n isStatic = true;\n }\n\n this.parseClassMemberWithIsStatic(\n classBody,\n member,\n state,\n isStatic,\n constructorAllowsSuper,\n );\n }\n\n parseClassMemberWithIsStatic(\n classBody: N.ClassBody,\n member: N.ClassMember,\n state: { hadConstructor: boolean },\n isStatic: boolean,\n constructorAllowsSuper: boolean,\n ) {\n const publicMethod: $FlowSubtype<N.ClassMethod> = member;\n const privateMethod: $FlowSubtype<N.ClassPrivateMethod> = member;\n const publicProp: $FlowSubtype<N.ClassMethod> = member;\n const privateProp: $FlowSubtype<N.ClassPrivateMethod> = member;\n\n const method: typeof publicMethod | typeof privateMethod = publicMethod;\n const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n member.static = isStatic;\n\n if (this.eat(tt.star)) {\n // a generator\n method.kind = \"method\";\n this.parseClassPropertyName(method);\n\n if (method.key.type === \"PrivateName\") {\n // Private generator method\n this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n return;\n }\n\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(publicMethod.key.start, \"Constructor can't be a generator\");\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n true,\n false,\n /* isConstructor */ false,\n false,\n );\n\n return;\n }\n\n const containsEsc = this.state.containsEsc;\n const key = this.parseClassPropertyName(member);\n const isPrivate = key.type === \"PrivateName\";\n // Check the key is not a computed expression or string literal.\n const isSimple = key.type === \"Identifier\";\n const maybeQuestionTokenStart = this.state.start;\n\n this.parsePostMemberNameModifiers(publicMember);\n\n if (this.isClassMethod()) {\n method.kind = \"method\";\n\n if (isPrivate) {\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n return;\n }\n\n // a normal method\n const isConstructor = this.isNonstaticConstructor(publicMethod);\n let allowsDirectSuper = false;\n if (isConstructor) {\n publicMethod.kind = \"constructor\";\n\n // TypeScript allows multiple overloaded constructor declarations.\n if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n this.raise(key.start, \"Duplicate constructor in the same class\");\n }\n state.hadConstructor = true;\n allowsDirectSuper = constructorAllowsSuper;\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n isConstructor,\n allowsDirectSuper,\n );\n } else if (this.isClassProperty()) {\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else if (\n isSimple &&\n key.name === \"async\" &&\n !containsEsc &&\n !this.isLineTerminator()\n ) {\n // an async method\n const isGenerator = this.eat(tt.star);\n\n if (publicMember.optional) {\n this.unexpected(maybeQuestionTokenStart);\n }\n\n method.kind = \"method\";\n // The so-called parsed name would have been \"async\": get the real name.\n this.parseClassPropertyName(method);\n this.parsePostMemberNameModifiers(publicMember);\n\n if (method.key.type === \"PrivateName\") {\n // private async method\n this.pushClassPrivateMethod(\n classBody,\n privateMethod,\n isGenerator,\n true,\n );\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(\n publicMethod.key.start,\n \"Constructor can't be an async function\",\n );\n }\n\n this.pushClassMethod(\n classBody,\n publicMethod,\n isGenerator,\n true,\n /* isConstructor */ false,\n false,\n );\n }\n } else if (\n isSimple &&\n (key.name === \"get\" || key.name === \"set\") &&\n !containsEsc &&\n !(this.match(tt.star) && this.isLineTerminator())\n ) {\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n method.kind = key.name;\n // The so-called parsed name would have been \"get/set\": get the real name.\n this.parseClassPropertyName(publicMethod);\n\n if (method.key.type === \"PrivateName\") {\n // private getter/setter\n this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n } else {\n if (this.isNonstaticConstructor(publicMethod)) {\n this.raise(\n publicMethod.key.start,\n \"Constructor can't have get/set modifier\",\n );\n }\n this.pushClassMethod(\n classBody,\n publicMethod,\n false,\n false,\n /* isConstructor */ false,\n false,\n );\n }\n\n this.checkGetterSetterParams(publicMethod);\n } else if (this.isLineTerminator()) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n if (isPrivate) {\n this.pushClassPrivateProperty(classBody, privateProp);\n } else {\n this.pushClassProperty(classBody, publicProp);\n }\n } else {\n this.unexpected();\n }\n }\n\n parseClassPropertyName(member: N.ClassMember): N.Expression | N.Identifier {\n const key = this.parsePropertyName(member);\n\n if (\n !member.computed &&\n member.static &&\n ((key: $FlowSubtype<N.Identifier>).name === \"prototype\" ||\n (key: $FlowSubtype<N.StringLiteral>).value === \"prototype\")\n ) {\n this.raise(\n key.start,\n \"Classes may not have static property named prototype\",\n );\n }\n\n if (key.type === \"PrivateName\" && key.id.name === \"constructor\") {\n this.raise(\n key.start,\n \"Classes may not have a private field named '#constructor'\",\n );\n }\n\n return key;\n }\n\n pushClassProperty(classBody: N.ClassBody, prop: N.ClassProperty) {\n if (\n !prop.computed &&\n (prop.key.name === \"constructor\" || prop.key.value === \"constructor\")\n ) {\n // Non-computed field, which is either an identifier named \"constructor\"\n // or a string literal named \"constructor\"\n this.raise(\n prop.key.start,\n \"Classes may not have a field named 'constructor'\",\n );\n }\n\n classBody.body.push(this.parseClassProperty(prop));\n }\n\n pushClassPrivateProperty(\n classBody: N.ClassBody,\n prop: N.ClassPrivateProperty,\n ) {\n this.expectPlugin(\"classPrivateProperties\", prop.key.start);\n classBody.body.push(this.parseClassPrivateProperty(prop));\n }\n\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n classBody.body.push(\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n \"ClassMethod\",\n true,\n ),\n );\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n this.expectPlugin(\"classPrivateMethods\", method.key.start);\n classBody.body.push(\n this.parseMethod(\n method,\n isGenerator,\n isAsync,\n /* isConstructor */ false,\n false,\n \"ClassPrivateMethod\",\n true,\n ),\n );\n }\n\n // Overridden in typescript.js\n parsePostMemberNameModifiers(\n // eslint-disable-next-line no-unused-vars\n methodOrProp: N.ClassMethod | N.ClassProperty,\n ): void {}\n\n // Overridden in typescript.js\n parseAccessModifier(): ?N.Accessibility {\n return undefined;\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n this.state.inClassProperty = true;\n\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n\n node.value = this.eat(tt.eq) ? this.parseMaybeAssign() : null;\n this.semicolon();\n this.state.inClassProperty = false;\n\n this.scope.exit();\n\n return this.finishNode(node, \"ClassPrivateProperty\");\n }\n\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (!node.typeAnnotation) {\n this.expectPlugin(\"classProperties\");\n }\n\n this.state.inClassProperty = true;\n\n this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);\n\n if (this.match(tt.eq)) {\n this.expectPlugin(\"classProperties\");\n this.next();\n node.value = this.parseMaybeAssign();\n } else {\n node.value = null;\n }\n this.semicolon();\n this.state.inClassProperty = false;\n\n this.scope.exit();\n\n return this.finishNode(node, \"ClassProperty\");\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId: ?boolean,\n bindingType: BindingTypes = BIND_CLASS,\n ): void {\n if (this.match(tt.name)) {\n node.id = this.parseIdentifier();\n if (isStatement) {\n this.checkLVal(node.id, bindingType, undefined, \"class name\");\n }\n } else {\n if (optionalId || !isStatement) {\n node.id = null;\n } else {\n this.unexpected(null, \"A class name is required\");\n }\n }\n }\n\n parseClassSuper(node: N.Class): void {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n }\n\n // Parses module export declaration.\n\n parseExport(node: N.Node): N.AnyExport {\n const hasDefault = this.maybeParseExportDefaultSpecifier(node);\n const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n const hasStar = parseAfterDefault && this.eatExportStar(node);\n const hasNamespace =\n hasStar && this.maybeParseExportNamespaceSpecifier(node);\n const parseAfterNamespace =\n parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n const isFromRequired = hasDefault || hasStar;\n\n if (hasStar && !hasNamespace) {\n if (hasDefault) this.unexpected();\n this.parseExportFrom(node, true);\n\n return this.finishNode(node, \"ExportAllDeclaration\");\n }\n\n const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n if (\n (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) ||\n (hasNamespace && parseAfterNamespace && !hasSpecifiers)\n ) {\n throw this.unexpected(null, tt.braceL);\n }\n\n let hasDeclaration;\n if (isFromRequired || hasSpecifiers) {\n hasDeclaration = false;\n this.parseExportFrom(node, isFromRequired);\n } else {\n hasDeclaration = this.maybeParseExportDeclaration(node);\n }\n\n if (isFromRequired || hasSpecifiers || hasDeclaration) {\n this.checkExport(node, true, false, !!node.source);\n return this.finishNode(node, \"ExportNamedDeclaration\");\n }\n\n if (this.eat(tt._default)) {\n // export default ...\n node.declaration = this.parseExportDefaultExpression();\n this.checkExport(node, true, true);\n\n return this.finishNode(node, \"ExportDefaultDeclaration\");\n }\n\n throw this.unexpected(null, tt.braceL);\n }\n\n // eslint-disable-next-line no-unused-vars\n eatExportStar(node: N.Node): boolean {\n return this.eat(tt.star);\n }\n\n maybeParseExportDefaultSpecifier(node: N.Node): boolean {\n if (this.isExportDefaultSpecifier()) {\n // export defaultObj ...\n this.expectPlugin(\"exportDefaultFrom\");\n const specifier = this.startNode();\n specifier.exported = this.parseIdentifier(true);\n node.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n return true;\n }\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(node: N.Node): boolean {\n if (this.isContextual(\"as\")) {\n if (!node.specifiers) node.specifiers = [];\n\n const specifier = this.startNodeAt(\n this.state.lastTokStart,\n this.state.lastTokStartLoc,\n );\n\n this.next();\n\n specifier.exported = this.parseIdentifier(true);\n node.specifiers.push(\n this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n );\n return true;\n }\n return false;\n }\n\n maybeParseExportNamedSpecifiers(node: N.Node): boolean {\n if (this.match(tt.braceL)) {\n if (!node.specifiers) node.specifiers = [];\n node.specifiers.push(...this.parseExportSpecifiers());\n\n node.source = null;\n node.declaration = null;\n\n return true;\n }\n return false;\n }\n\n maybeParseExportDeclaration(node: N.Node): boolean {\n if (this.shouldParseExportDeclaration()) {\n if (this.isContextual(\"async\")) {\n const next = this.nextTokenStart();\n\n // export async;\n if (!this.isUnparsedContextual(next, \"function\")) {\n this.unexpected(next, `Unexpected token, expected \"function\"`);\n }\n }\n\n node.specifiers = [];\n node.source = null;\n node.declaration = this.parseExportDeclaration(node);\n\n return true;\n }\n return false;\n }\n\n isAsyncFunction(): boolean {\n if (!this.isContextual(\"async\")) return false;\n const next = this.nextTokenStart();\n return (\n !lineBreak.test(this.input.slice(this.state.pos, next)) &&\n this.isUnparsedContextual(next, \"function\")\n );\n }\n\n parseExportDefaultExpression(): N.Expression | N.Declaration {\n const expr = this.startNode();\n\n const isAsync = this.isAsyncFunction();\n\n if (this.match(tt._function) || isAsync) {\n this.next();\n if (isAsync) {\n this.next();\n }\n\n return this.parseFunction(\n expr,\n FUNC_STATEMENT | FUNC_NULLABLE_ID,\n isAsync,\n );\n } else if (this.match(tt._class)) {\n return this.parseClass(expr, true, true);\n } else if (this.match(tt.at)) {\n if (\n this.hasPlugin(\"decorators\") &&\n this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")\n ) {\n this.raise(\n this.state.start,\n \"Decorators must be placed *before* the 'export' keyword.\" +\n \" You can set the 'decoratorsBeforeExport' option to false to use\" +\n \" the 'export @decorator class {}' syntax\",\n );\n }\n this.parseDecorators(false);\n return this.parseClass(expr, true, true);\n } else if (this.match(tt._const) || this.match(tt._var) || this.isLet()) {\n throw this.raise(\n this.state.start,\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n );\n } else {\n const res = this.parseMaybeAssign();\n this.semicolon();\n return res;\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n parseExportDeclaration(node: N.ExportNamedDeclaration): ?N.Declaration {\n return this.parseStatement(null);\n }\n\n isExportDefaultSpecifier(): boolean {\n if (this.match(tt.name)) {\n return this.state.value !== \"async\" && this.state.value !== \"let\";\n }\n\n if (!this.match(tt._default)) {\n return false;\n }\n\n const next = this.nextTokenStart();\n return (\n this.input.charCodeAt(next) === charCodes.comma ||\n this.isUnparsedContextual(next, \"from\")\n );\n }\n\n parseExportFrom(node: N.ExportNamedDeclaration, expect?: boolean): void {\n if (this.eatContextual(\"from\")) {\n node.source = this.parseImportSource();\n this.checkExport(node);\n } else {\n if (expect) {\n this.unexpected();\n } else {\n node.source = null;\n }\n }\n\n this.semicolon();\n }\n\n shouldParseExportDeclaration(): boolean {\n if (this.match(tt.at)) {\n this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n if (this.hasPlugin(\"decorators\")) {\n if (this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\")) {\n this.unexpected(\n this.state.start,\n \"Decorators must be placed *before* the 'export' keyword.\" +\n \" You can set the 'decoratorsBeforeExport' option to false to use\" +\n \" the 'export @decorator class {}' syntax\",\n );\n } else {\n return true;\n }\n }\n }\n\n return (\n this.state.type.keyword === \"var\" ||\n this.state.type.keyword === \"const\" ||\n this.state.type.keyword === \"function\" ||\n this.state.type.keyword === \"class\" ||\n this.isLet() ||\n this.isAsyncFunction()\n );\n }\n\n checkExport(\n node: N.ExportNamedDeclaration,\n checkNames?: boolean,\n isDefault?: boolean,\n isFrom?: boolean,\n ): void {\n if (checkNames) {\n // Check for duplicate exports\n if (isDefault) {\n // Default exports\n this.checkDuplicateExports(node, \"default\");\n } else if (node.specifiers && node.specifiers.length) {\n // Named exports\n for (const specifier of node.specifiers) {\n this.checkDuplicateExports(specifier, specifier.exported.name);\n // $FlowIgnore\n if (!isFrom && specifier.local) {\n // check for keywords used as local names\n this.checkReservedWord(\n specifier.local.name,\n specifier.local.start,\n true,\n false,\n );\n // check if export is defined\n // $FlowIgnore\n this.scope.checkLocalExport(specifier.local);\n }\n }\n } else if (node.declaration) {\n // Exported declarations\n if (\n node.declaration.type === \"FunctionDeclaration\" ||\n node.declaration.type === \"ClassDeclaration\"\n ) {\n const id = node.declaration.id;\n if (!id) throw new Error(\"Assertion failure\");\n\n this.checkDuplicateExports(node, id.name);\n } else if (node.declaration.type === \"VariableDeclaration\") {\n for (const declaration of node.declaration.declarations) {\n this.checkDeclaration(declaration.id);\n }\n }\n }\n }\n\n const currentContextDecorators = this.state.decoratorStack[\n this.state.decoratorStack.length - 1\n ];\n if (currentContextDecorators.length) {\n const isClass =\n node.declaration &&\n (node.declaration.type === \"ClassDeclaration\" ||\n node.declaration.type === \"ClassExpression\");\n if (!node.declaration || !isClass) {\n throw this.raise(\n node.start,\n \"You can only use decorators on an export when exporting a class\",\n );\n }\n this.takeDecorators(node.declaration);\n }\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node.type === \"Identifier\") {\n this.checkDuplicateExports(node, node.name);\n } else if (node.type === \"ObjectPattern\") {\n for (const prop of node.properties) {\n this.checkDeclaration(prop);\n }\n } else if (node.type === \"ArrayPattern\") {\n for (const elem of node.elements) {\n if (elem) {\n this.checkDeclaration(elem);\n }\n }\n } else if (node.type === \"ObjectProperty\") {\n this.checkDeclaration(node.value);\n } else if (node.type === \"RestElement\") {\n this.checkDeclaration(node.argument);\n } else if (node.type === \"AssignmentPattern\") {\n this.checkDeclaration(node.left);\n }\n }\n\n checkDuplicateExports(\n node:\n | N.Identifier\n | N.ExportNamedDeclaration\n | N.ExportSpecifier\n | N.ExportDefaultSpecifier,\n name: string,\n ): void {\n if (this.state.exportedIdentifiers.indexOf(name) > -1) {\n this.raise(\n node.start,\n name === \"default\"\n ? \"Only one default export allowed per module.\"\n : `\\`${name}\\` has already been exported. Exported identifiers must be unique.`,\n );\n }\n this.state.exportedIdentifiers.push(name);\n }\n\n // Parses a comma-separated list of module exports.\n\n parseExportSpecifiers(): Array<N.ExportSpecifier> {\n const nodes = [];\n let first = true;\n\n // export { x, y as z } [from '...']\n this.expect(tt.braceL);\n\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n\n const node = this.startNode();\n node.local = this.parseIdentifier(true);\n node.exported = this.eatContextual(\"as\")\n ? this.parseIdentifier(true)\n : node.local.__clone();\n nodes.push(this.finishNode(node, \"ExportSpecifier\"));\n }\n\n return nodes;\n }\n\n // Parses import declaration.\n\n parseImport(node: N.Node): N.AnyImport {\n // import '...'\n node.specifiers = [];\n if (!this.match(tt.string)) {\n const hasDefault = this.maybeParseDefaultImportSpecifier(node);\n const parseNext = !hasDefault || this.eat(tt.comma);\n const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n this.expectContextual(\"from\");\n }\n node.source = this.parseImportSource();\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n\n parseImportSource(): N.StringLiteral {\n if (!this.match(tt.string)) this.unexpected();\n return this.parseExprAtom();\n }\n\n // eslint-disable-next-line no-unused-vars\n shouldParseDefaultImport(node: N.ImportDeclaration): boolean {\n return this.match(tt.name);\n }\n\n parseImportSpecifierLocal(\n node: N.ImportDeclaration,\n specifier: N.Node,\n type: string,\n contextDescription: string,\n ): void {\n specifier.local = this.parseIdentifier();\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n contextDescription,\n );\n node.specifiers.push(this.finishNode(specifier, type));\n }\n\n maybeParseDefaultImportSpecifier(node: N.ImportDeclaration): boolean {\n if (this.shouldParseDefaultImport(node)) {\n // import defaultObj, { x, y as z } from '...'\n this.parseImportSpecifierLocal(\n node,\n this.startNode(),\n \"ImportDefaultSpecifier\",\n \"default import specifier\",\n );\n return true;\n }\n return false;\n }\n\n maybeParseStarImportSpecifier(node: N.ImportDeclaration): boolean {\n if (this.match(tt.star)) {\n const specifier = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n\n this.parseImportSpecifierLocal(\n node,\n specifier,\n \"ImportNamespaceSpecifier\",\n \"import namespace specifier\",\n );\n return true;\n }\n return false;\n }\n\n parseNamedImportSpecifiers(node: N.ImportDeclaration) {\n let first = true;\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (this.eat(tt.colon)) {\n throw this.raise(\n this.state.start,\n \"ES2015 named imports do not destructure. \" +\n \"Use another statement for destructuring after the import.\",\n );\n }\n\n this.expect(tt.comma);\n if (this.eat(tt.braceR)) break;\n }\n\n this.parseImportSpecifier(node);\n }\n }\n\n parseImportSpecifier(node: N.ImportDeclaration): void {\n const specifier = this.startNode();\n specifier.imported = this.parseIdentifier(true);\n if (this.eatContextual(\"as\")) {\n specifier.local = this.parseIdentifier();\n } else {\n this.checkReservedWord(\n specifier.imported.name,\n specifier.start,\n true,\n true,\n );\n specifier.local = specifier.imported.__clone();\n }\n this.checkLVal(\n specifier.local,\n BIND_LEXICAL,\n undefined,\n \"import specifier\",\n );\n node.specifiers.push(this.finishNode(specifier, \"ImportSpecifier\"));\n }\n}\n","// @flow\n\nimport type { Options } from \"../options\";\nimport type { File, JSXOpeningElement } from \"../types\";\nimport type { PluginList } from \"../plugin-utils\";\nimport { getOptions } from \"../options\";\nimport StatementParser from \"./statement\";\nimport { SCOPE_PROGRAM } from \"../util/scopeflags\";\nimport ScopeHandler from \"../util/scope\";\n\nexport type PluginsMap = Map<string, { [string]: any }>;\n\nexport default class Parser extends StatementParser {\n // Forward-declaration so typescript plugin can override jsx plugin\n +jsxParseOpeningElementAfterName: (\n node: JSXOpeningElement,\n ) => JSXOpeningElement;\n\n constructor(options: ?Options, input: string) {\n options = getOptions(options);\n super(options, input);\n\n const ScopeHandler = this.getScopeHandler();\n\n this.options = options;\n this.inModule = this.options.sourceType === \"module\";\n this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);\n this.plugins = pluginsMap(this.options.plugins);\n this.filename = options.sourceFilename;\n }\n\n // This can be overwritten, for example, by the TypeScript plugin.\n getScopeHandler(): Class<ScopeHandler<*>> {\n return ScopeHandler;\n }\n\n parse(): File {\n this.scope.enter(SCOPE_PROGRAM);\n const file = this.startNode();\n const program = this.startNode();\n this.nextToken();\n file.errors = null;\n this.parseTopLevel(file, program);\n file.errors = this.state.errors;\n return file;\n }\n}\n\nfunction pluginsMap(plugins: PluginList): PluginsMap {\n const pluginMap: PluginsMap = new Map();\n for (const plugin of plugins) {\n const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];\n if (!pluginMap.has(name)) pluginMap.set(name, options || {});\n }\n return pluginMap;\n}\n","// @flow\n\nimport { type Options } from \"./options\";\nimport {\n hasPlugin,\n validatePlugins,\n mixinPluginNames,\n mixinPlugins,\n type PluginList,\n} from \"./plugin-utils\";\nimport Parser from \"./parser\";\n\nimport { types as tokTypes } from \"./tokenizer/types\";\nimport \"./tokenizer/context\";\n\nimport type { Expression, File } from \"./types\";\n\nexport function parse(input: string, options?: Options): File {\n if (options && options.sourceType === \"unambiguous\") {\n options = {\n ...options,\n };\n try {\n options.sourceType = \"module\";\n const parser = getParser(options, input);\n const ast = parser.parse();\n\n if (parser.sawUnambiguousESM) {\n return ast;\n }\n\n if (parser.ambiguousScriptDifferentAst) {\n // Top level await introduces code which can be both a valid script and\n // a valid module, but which produces different ASTs:\n // await\n // 0\n // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n } else {\n // This is both a valid module and a valid script, but\n // we parse it as a script by default\n ast.program.sourceType = \"script\";\n }\n\n return ast;\n } catch (moduleError) {\n try {\n options.sourceType = \"script\";\n return getParser(options, input).parse();\n } catch {}\n\n throw moduleError;\n }\n } else {\n return getParser(options, input).parse();\n }\n}\n\nexport function parseExpression(input: string, options?: Options): Expression {\n const parser = getParser(options, input);\n if (parser.options.strictMode) {\n parser.state.strict = true;\n }\n return parser.getExpression();\n}\n\nexport { tokTypes };\n\nfunction getParser(options: ?Options, input: string): Parser {\n let cls = Parser;\n if (options && options.plugins) {\n validatePlugins(options.plugins);\n cls = getParserClass(options.plugins);\n }\n\n return new cls(options, input);\n}\n\nconst parserClassCache: { [key: string]: Class<Parser> } = {};\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(pluginsFromOptions: PluginList): Class<Parser> {\n const pluginList = mixinPluginNames.filter(name =>\n hasPlugin(pluginsFromOptions, name),\n );\n\n const key = pluginList.join(\"/\");\n let cls = parserClassCache[key];\n if (!cls) {\n cls = Parser;\n for (const plugin of pluginList) {\n cls = mixinPlugins[plugin](cls);\n }\n parserClassCache[key] = cls;\n }\n return cls;\n}\n"],"names":["beforeExpr","startsExpr","isLoop","isAssign","prefix","postfix","TokenType","constructor","label","conf","keyword","rightAssociative","binop","updateContext","keywords","Map","createKeyword","name","options","token","set","createBinop","types","num","bigint","regexp","string","eof","bracketL","bracketR","braceL","braceBarL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","template","ellipsis","backQuote","dollarBraceL","at","hash","interpreterDirective","eq","assign","incDec","bang","tilde","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","relational","bitShift","plusMin","modulo","star","slash","exponent","_break","_case","_catch","_continue","_debugger","_default","_do","_else","_finally","_for","_function","_if","_return","_switch","_throw","_try","_var","_const","_while","_with","_new","_this","_super","_class","_extends","_export","_import","_null","_true","_false","_in","_instanceof","_typeof","_void","_delete","SCOPE_OTHER","SCOPE_PROGRAM","SCOPE_FUNCTION","SCOPE_ASYNC","SCOPE_GENERATOR","SCOPE_ARROW","SCOPE_SIMPLE_CATCH","SCOPE_SUPER","SCOPE_DIRECT_SUPER","SCOPE_CLASS","SCOPE_TS_MODULE","SCOPE_VAR","functionFlags","isAsync","isGenerator","BIND_KIND_VALUE","BIND_KIND_TYPE","BIND_SCOPE_VAR","BIND_SCOPE_LEXICAL","BIND_SCOPE_FUNCTION","BIND_SCOPE_OUTSIDE","BIND_FLAGS_NONE","BIND_FLAGS_CLASS","BIND_FLAGS_TS_ENUM","BIND_FLAGS_TS_CONST_ENUM","BIND_FLAGS_TS_EXPORT_ONLY","BIND_CLASS","BIND_LEXICAL","BIND_VAR","BIND_FUNCTION","BIND_TS_INTERFACE","BIND_TS_TYPE","BIND_TS_ENUM","BIND_TS_AMBIENT","BIND_NONE","BIND_OUTSIDE","BIND_TS_CONST_ENUM","BIND_TS_NAMESPACE","isSimpleProperty","node","type","kind","method","superClass","estreeParseRegExpLiteral","pattern","flags","regex","RegExp","e","estreeParseLiteral","estreeParseBigIntLiteral","value","bigInt","BigInt","String","parseLiteral","directiveToStmt","directive","directiveLiteral","stmt","startNodeAt","start","loc","expression","raw","extra","finishNodeAt","end","slice","initFunction","checkDeclaration","checkGetterSetterParams","prop","paramCount","params","length","raise","checkLVal","expr","bindingType","checkClashes","contextDescription","disallowLetBinding","properties","forEach","checkDuplicatedProto","protoRef","computed","shorthand","key","used","isStrictBody","isBlockStatement","body","isValidDirective","parenthesized","stmtToDirective","parseBlockBody","allowDirectives","topLevel","directiveStatements","directives","map","d","concat","pushClassMethod","classBody","isConstructor","allowsDirectSuper","parseMethod","typeParameters","push","parseExprAtom","refShorthandDefaultPos","state","tt","startPos","startLoc","parseFunctionBody","allowExpression","isMethod","allowDirectSuper","inClassScope","funcNode","startNode","finishNode","parseObjectMethod","isPattern","containsEsc","parseObjectProperty","toAssignable","isBinding","toAssignableObjectExpressionProp","isLast","finishCallExpression","optional","callee","source","arguments","toReferencedListDeep","exprList","isParenthesizedExpr","lineBreak","lineBreakG","isNewLine","code","skipWhiteSpace","isWhitespace","TokContext","isExpr","preserveSpace","override","braceStatement","braceExpression","templateQuasi","parenStatement","parenExpression","p","readTmplToken","functionExpression","functionStatement","context","exprAllowed","out","pop","curContext","prevType","allowed","scope","inGenerator","isIterator","braceIsBlock","statementParens","test","input","lastTokEnd","b_stat","reservedWords","strict","strictBind","reservedWordsStrictSet","Set","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","keywordRelationalOperator","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","pos","i","isIdentifierStart","fromCharCode","isIteratorStart","current","next","isIdentifierChar","reservedTypes","isEsModuleType","bodyElement","declaration","hasTypeImportKind","importKind","isMaybeDefaultImport","exportSuggestions","const","let","interface","partition","list","list1","list2","FLOW_PRAGMA_REGEX","flowPragma","undefined","shouldParseTypes","getPluginOption","shouldParseEnums","finishToken","val","addComment","comment","matches","exec","Error","flowParseTypeInitialiser","tok","oldInType","inType","expect","flowParseType","flowParsePredicate","moduloLoc","moduloPos","checksLoc","expectContextual","line","column","eat","parseExpression","flowParseTypeAndPredicateInitialiser","predicate","match","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","id","parseIdentifier","typeNode","typeContainer","isRelational","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","rest","returnType","typeAnnotation","resetEndLocation","semicolon","flowParseDeclare","insideModule","flowParseDeclareVariable","eatContextual","flowParseDeclareModuleExports","lastTokStart","flowParseDeclareModule","isContextual","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","unexpected","flowParseTypeAnnotatableIdentifier","declareName","enter","bodyNode","parseImport","exit","hasModuleExport","errorMessage","default","isLet","suggestion","parseExport","exportKind","flowParseTypeAnnotation","flowParseTypeAlias","flowParseOpaqueType","isClass","flowParseRestrictedIdentifier","extends","implements","mixins","flowParseInterfaceExtends","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","right","declare","supertype","impltype","flowParseTypeParameter","requireDefault","nodeStart","variance","flowParseVariance","ident","bound","jsxTagStart","defaultRequired","typeParameter","expectRelational","oldNoAnonFunctionType","noAnonFunctionType","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","static","lookahead","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","valueNode","callProperties","indexers","internalSlots","endDelim","exact","inexact","protoStart","inexactStart","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","isInexactToken","argument","proto","flowCheckGetterSetterParams","property","node2","qualification","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","lh","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","createIdentifier","flowParsePostfixType","canInsertSemicolon","elementType","flowParsePrefixType","flowParseAnonFunctionWithoutParens","param","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatement","flowParseEnumDeclaration","parseExpressionStatement","shouldParseExportDeclaration","isExportDefaultSpecifier","parseExportDefaultExpression","parseConditional","noIn","refNeedsArrowPos","result","tryParse","error","failState","clone","originalNoArrowAt","noArrowAt","consequent","failed","tryParseConditionalConsequent","valid","invalid","getArrowLikeExpressions","alternate","parseMaybeAssign","noArrowParamsConversionAt","disallowInvalid","stack","arrows","finishArrowValidation","every","isAssignable","toAssignableList","trailingComma","checkParams","parse","indexOf","parseParenItem","typeCastNode","assertModuleNodeAllowed","decl","parseExportDeclaration","declarationNode","specifiers","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","isStatement","optionalId","getTokenFromCode","charCodeAt","finishOp","readWord","last","elements","element","operator","trailingCommaPos","toReferencedList","parseClassProperty","parseClassPrivateProperty","isClassMethod","isClassProperty","isNonstaticConstructor","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","parsePropertyName","parseObjPropValue","parseAssignableListItemTypes","parseMaybeDefault","left","shouldParseDefaultImport","parseImportSpecifierLocal","specifier","local","maybeParseDefaultImportSpecifier","parseImportSpecifier","firstIdentLoc","firstIdent","specifierTypeKind","isLookaheadContextual","as_ident","imported","__clone","nodeIsTypeImport","specifierIsTypeImport","checkReservedWord","parseFunctionParams","allowModifiers","parseVarId","parseAsyncArrowFromCallExpression","call","shouldParseAsyncArrow","afterLeftParse","jsx","hasPlugin","tc","j_oTag","j_expr","arrowExpression","resetStartLocationFromNode","thrown","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","parseParenAndDistinguishExpression","canBeArrow","parseSubscripts","base","noCalls","parseCallExpressionArguments","abort","parseAsyncArrowWithTypeParameters","aborted","parseSubscript","subscriptState","isLookaheadRelational","expectPlugin","optionalChainMember","stop","typeArguments","parseNewArguments","targs","parseArrowExpression","readToken_mult_modulo","hasFlowComment","nextToken","readToken_pipe_amp","parseTopLevel","file","program","fileNode","skipBlockComment","skipFlowComment","hasFlowCommentCompletion","shiftToFirstNonWhiteSpace","includes","ch2","ch3","flowEnumErrorBooleanMemberNotInitialized","enumName","memberName","flowEnumErrorInvalidMemberName","toUpperCase","flowEnumErrorDuplicateMemberName","flowEnumErrorInconsistentMemberValues","flowEnumErrorInvalidExplicitType","suppliedType","message","flowEnumErrorInvalidMemberInitializer","explicitType","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitailized","flowEnumMemberInit","endOfInit","literal","parseBooleanLiteral","flowEnumMemberRaw","init","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","members","booleanMembers","numberMembers","stringMembers","defaultedMembers","memberNode","add","flowEnumStringMembers","initializedMembers","member","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","entities","quot","amp","apos","lt","gt","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","HEX_NUMBER","DECIMAL_NUMBER","j_cTag","jsxName","jsxText","jsxTagEnd","isFragment","object","getQualifiedJSXName","namespace","jsxReadToken","chunkStart","ch","jsxReadEntity","jsxReadNewLine","normalizeCRLF","curLine","lineStart","jsxReadString","quote","str","count","entity","substr","fromCodePoint","parseInt","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","newNode","jsxParseAttributeValue","jsxParseExpressionContainer","jsxParseEmptyExpression","lastTokEndLoc","jsxParseSpreadChild","jsxParseAttribute","jsxParseOpeningElementAt","jsxParseOpeningElementAfterName","attributes","selfClosing","jsxParseClosingElementAt","jsxParseElementAt","children","openingElement","closingElement","contents","openingFragment","closingFragment","jsxParseElement","refShortHandDefaultPos","inPropertyName","Scope","var","lexical","functions","ScopeHandler","scopeStack","undefinedExports","inFunction","currentVarScope","inAsync","allowSuper","currentThisScope","inClass","inNonArrowFunction","treatFunctionsAsVar","treatFunctionsAsVarInScope","currentScope","createScope","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","TypeScriptScope","enums","constEnums","classes","exportOnlyBindings","TypeScriptScopeHandler","isConst","wasConst","nonNull","x","assert","keywordTypeFromName","getScopeHandler","tsIsIdentifier","tsNextTokenCanFollowModifier","hasPrecedingLineBreak","tsParseModifier","allowedModifiers","modifier","tsTryParse","bind","tsParseModifiers","modifiers","Object","create","hasOwnProperty","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","tsParseDelimitedListWorker","expectSuccess","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","qualifier","tsParseEntityName","tsParseTypeArguments","allowReservedWords","startNodeAtNode","tsParseTypeReference","typeName","tsParseThisTypePredicate","lhs","parameterName","tsParseTypeAnnotation","tsParseThisTypeNode","tsParseTypeQuery","exprName","tsParseTypeParameter","parseIdentifierName","constraint","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsTryNextParseConstantContext","tsFillSignature","returnToken","signature","returnTokenRequired","parameters","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","parseBindingList","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","readonly","nodeAny","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedTypeParameter","tsExpectThenParseType","tsParseMappedType","tsTryParseType","tsParseTupleType","elementTypes","tsParseTupleElementType","seenOptionalElement","elementNode","restNode","tsParseType","lookaheadCharCode","raiseRestNotLast","optionalTypeNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","tsParseLiteralTypeNode","tsParseTemplateLiteralType","templateNode","parseTemplate","expressions","tsParseThisTypeOrThisTypePredicate","thisKeyword","tsParseNonArrayType","parseMaybeUnary","tsParseArrayTypeOrHigher","objectType","indexType","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","find","kw","tsParseUnionOrIntersectionType","parseConstituentType","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","braceStackCounter","tsInType","t","asserts","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","checkType","extendsType","trueType","falseType","tsParseTypeAssertion","tsNextThenParseType","tsParseHeritageClause","descriptor","originalStart","delimitedList","tsParseExpressionWithTypeArguments","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInNoContext","cb","oldContext","tsDoThenParseType","tsParseEnumMember","initializer","tsParseEnumDeclaration","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","global","tsParseImportEqualsDeclaration","isExport","moduleReference","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","f","res","tsTryParseAndCatch","tsTryParseDeclare","nany","isLineTerminator","starttype","parseFunctionStatement","parseClass","parseVarStatement","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminatorAndMatch","cls","abstract","tokenType","tsTryParseGenericAsyncArrowFunction","tsIsDeclarationStart","parseAssignableListItem","decorators","accessibility","parseAccessModifier","elt","pp","parameter","bodilessType","registerFunctionStatementId","nonNullExpression","atPossibleAsync","asyncArrowFn","parseTaggedTemplateExpression","args","parseExprOp","leftStartPos","leftStartLoc","minPrec","checkKeywords","checkDuplicateExports","isAbstractClass","parseStatementContent","ahead","parseClassMember","constructorAllowsSuper","parseClassMemberWithIsStatic","parsePostMemberNameModifiers","methodOrProp","isDeclare","resetStartLocation","parseClassPropertyAnnotation","definite","equal","typeCast","ct","parseBindingAtom","parseMaybeDecoratorArguments","isInParens","_exprListItem","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","placeholder","parsePlaceholder","expectedNode","assertNoSpace","finishPlaceholder","isFinished","verifyBreakContinue","parseBlock","parseFunctionId","takeDecorators","parseClassBody","exported","maybeParseExportDefaultSpecifier","checkExport","filter","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","parseV8Intrinsic","v8IntrinsicStart","identifier","plugins","some","plugin","Array","isArray","option","PIPELINE_PROPOSALS","validatePlugins","decoratorsBeforeExport","join","mixinPlugins","estree","flow","typescript","v8intrinsic","placeholders","mixinPluginNames","keys","defaultOptions","sourceType","sourceFilename","startLine","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","strictMode","ranges","tokens","createParenthesizedExpressions","errorRecovery","getOptions","opts","Position","col","SourceLocation","getLineInfo","offset","lastIndex","index","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","get","CommentsParser","filename","trailingComments","leadingComments","adjustCommentsAfterTrailingComma","takeAllComments","lastElement","j","commentPreviousNode","splice","newTrailingComments","leadingComment","processComment","commentStack","firstChild","lastChild","lastInStack","innerComments","LocationParser","getLocationForPosition","lastTokStartLoc","endLoc","missingPluginNames","err","SyntaxError","missingPlugin","isLookahead","errors","State","potentialArrowAt","inParameters","maybeInArrowParameters","inPipeline","inClassProperty","topicContext","maxNumOfResolvableTopics","maxTopicIndex","soloAwait","inFSharpPipelineDirectBody","classLevel","labels","decoratorStack","yieldPos","awaitPos","comments","containsOctal","octalPosition","exportedIdentifiers","invalidTemplateEscapePosition","curPosition","skipArrays","isDigit","VALID_REGEX_FLAGS","forbiddenNumericSeparatorSiblings","decBinOct","hex","allowedNumericSeparatorSiblings","bin","oct","dec","Token","Tokenizer","checkKeywordEscapes","old","curr","nextTokenStart","thisTokEnd","skip","setStrict","lastIndexOf","skipSpace","codePointAt","pushComment","block","text","skipLineComment","startSkip","loop","readToken_numberSign","readToken_interpreter","nextPos","readToken_dot","readNumber","readToken_slash","readRegexp","width","readToken_caret","readToken_plus_min","readToken_lt_gt","size","readToken_eq_excl","readToken_question","next2","readRadixNumber","readString","escaped","charAt","content","mods","char","charCode","readInt","radix","len","forceLen","allowNumSeparator","forbiddenSiblings","allowedSiblings","total","Infinity","prev","Number","isNaN","isBigInt","replace","startsWithDot","isFloat","isNonOctalDecimalInt","octal","underscorePos","parseFloat","readCodePoint","throwOnInvalid","codePos","readHexChar","readEscapedChar","containsInvalid","inTemplate","octalStr","n","readWord1","escStart","identifierCheck","esc","keywordTypes","parent","update","UtilParser","addExtra","op","afterNext","eatRelational","isUnparsedContextual","nameStart","nameEnd","messageOrType","expectOnePlugin","names","checkYieldAwaitInDefaultParams","strictDirective","fn","oldState","abortSignal","Node","parser","range","NodeUtils","locationNode","unwrapParenthesizedExpression","LValParser","checkToRestConversion","arg","raiseTrailingCommaAfterRest","parseSpread","parseRestBinding","parseObj","close","closeCharCode","allowEmpty","elts","first","checkCommaAfterRest","parseDecorator","strictModeChanged","elem","ExpressionParser","getExpression","parseYield","failOnShorthandAssign","parseMaybeConditional","parseExprOps","prec","checkPipelineAtInfixOperator","parseExprOpRightExpr","withTopicPermittingContext","parseSmartPipelineBody","parseExprOpBaseRightExpr","withSoloAwaitPermittingContext","parseFSharpPipelineBody","isAwaitAllowed","parseAwait","parseExprSubscripts","maybeAsyncArrow","parseNoCallExpr","parseMaybePrivateName","oldMaybeInArrowParameters","oldYieldPos","oldAwaitPos","tag","quasi","importArg","possibleAsyncArrow","dynamicImport","allowPlaceholder","nodeForExtra","innerParenStart","oldInFSharpPipelineDirectBody","parseExprListItem","parseImportMetaProperty","parseFunction","oldLabels","parseExprList","ret","parseFunctionExpression","parseDecorators","parseNew","primaryTopicReferenceIsAllowedInCurrentTopicContext","registerTopicReference","isPrivate","meta","parseMetaProperty","propertyName","innerStartPos","innerStartLoc","spreadStart","optionalCommaStart","spreadNodeStartPos","spreadNodeStartLoc","innerEndPos","innerEndLoc","arrowNode","parenStart","metaProp","parseTemplateElement","isTagged","cooked","tail","curElt","quasis","propHash","parseObjectMember","isAsyncProp","isGetterOrSetterMethod","oldInPropertyName","generator","async","isExpression","oldStrict","useStrict","oldInParameters","nonSimple","isSimpleParamList","errorPos","nameHash","identifierName","reservedTest","delegate","childExpression","pipelineStyle","checkSmartPipelineBodyStyle","checkSmartPipelineBodyEarlyErrors","parseSmartPipelineBodyInStyle","topicReferenceWasUsedInCurrentTopicContext","isSimpleReference","callback","outerContextTopicState","withTopicForbiddingContext","outerContextSoloAwaitState","loopLabel","switchLabel","FUNC_NO_FLAGS","FUNC_STATEMENT","FUNC_HANGING_STATEMENT","FUNC_NULLABLE_ID","StatementParser","interpreter","parseInterpreterDirective","from","nextCh","parseBreakContinueStatement","parseDebuggerStatement","parseDoStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","allowExport","currentContextDecorators","decorator","isBreak","lab","parseHeaderExpression","awaitAt","parseFor","parseVar","declarations","parseForIn","description","declarationPosition","discriminant","cases","cur","sawDefault","isCase","handler","clause","simple","finalizer","statementStart","createNewLexicalScope","parsedNonDirective","isForIn","await","isFor","isTypescript","statement","isHangingStatement","requireId","oldInClassProperty","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","publicMember","parseClassPropertyName","isSimple","maybeQuestionTokenStart","pushClassPrivateProperty","pushClassProperty","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","checkNames","isDefault","isFrom","nodes","parseNext","Parser","pluginsMap","pluginMap","getParser","ast","moduleError","getParserClass","parserClassCache","pluginsFromOptions","pluginList"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getOptions = getOptions;
7
+ exports.defaultOptions = void 0;
8
+ const defaultOptions = {
9
+ sourceType: "script",
10
+ sourceFilename: undefined,
11
+ startLine: 1,
12
+ allowAwaitOutsideFunction: false,
13
+ allowReturnOutsideFunction: false,
14
+ allowImportExportEverywhere: false,
15
+ allowSuperOutsideMethod: false,
16
+ allowUndeclaredExports: false,
17
+ plugins: [],
18
+ strictMode: null,
19
+ ranges: false,
20
+ tokens: false,
21
+ createParenthesizedExpressions: false,
22
+ errorRecovery: false
23
+ };
24
+ exports.defaultOptions = defaultOptions;
25
+
26
+ function getOptions(opts) {
27
+ const options = {};
28
+
29
+ for (let _i = 0, _Object$keys = Object.keys(defaultOptions); _i < _Object$keys.length; _i++) {
30
+ const key = _Object$keys[_i];
31
+ options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
32
+ }
33
+
34
+ return options;
35
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ class BaseParser {
9
+ constructor() {
10
+ this.sawUnambiguousESM = false;
11
+ this.ambiguousScriptDifferentAst = false;
12
+ }
13
+
14
+ hasPlugin(name) {
15
+ return this.plugins.has(name);
16
+ }
17
+
18
+ getPluginOption(plugin, name) {
19
+ if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];
20
+ }
21
+
22
+ }
23
+
24
+ exports.default = BaseParser;
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _base = _interopRequireDefault(require("./base"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function last(stack) {
13
+ return stack[stack.length - 1];
14
+ }
15
+
16
+ class CommentsParser extends _base.default {
17
+ addComment(comment) {
18
+ if (this.filename) comment.loc.filename = this.filename;
19
+ this.state.trailingComments.push(comment);
20
+ this.state.leadingComments.push(comment);
21
+ }
22
+
23
+ adjustCommentsAfterTrailingComma(node, elements, takeAllComments) {
24
+ if (this.state.leadingComments.length === 0) {
25
+ return;
26
+ }
27
+
28
+ let lastElement = null;
29
+ let i = elements.length;
30
+
31
+ while (lastElement === null && i > 0) {
32
+ lastElement = elements[--i];
33
+ }
34
+
35
+ if (lastElement === null) {
36
+ return;
37
+ }
38
+
39
+ for (let j = 0; j < this.state.leadingComments.length; j++) {
40
+ if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
41
+ this.state.leadingComments.splice(j, 1);
42
+ j--;
43
+ }
44
+ }
45
+
46
+ const newTrailingComments = [];
47
+
48
+ for (let i = 0; i < this.state.leadingComments.length; i++) {
49
+ const leadingComment = this.state.leadingComments[i];
50
+
51
+ if (leadingComment.end < node.end) {
52
+ newTrailingComments.push(leadingComment);
53
+
54
+ if (!takeAllComments) {
55
+ this.state.leadingComments.splice(i, 1);
56
+ i--;
57
+ }
58
+ } else {
59
+ if (node.trailingComments === undefined) {
60
+ node.trailingComments = [];
61
+ }
62
+
63
+ node.trailingComments.push(leadingComment);
64
+ }
65
+ }
66
+
67
+ if (takeAllComments) this.state.leadingComments = [];
68
+
69
+ if (newTrailingComments.length > 0) {
70
+ lastElement.trailingComments = newTrailingComments;
71
+ } else if (lastElement.trailingComments !== undefined) {
72
+ lastElement.trailingComments = [];
73
+ }
74
+ }
75
+
76
+ processComment(node) {
77
+ if (node.type === "Program" && node.body.length > 0) return;
78
+ const stack = this.state.commentStack;
79
+ let firstChild, lastChild, trailingComments, i, j;
80
+
81
+ if (this.state.trailingComments.length > 0) {
82
+ if (this.state.trailingComments[0].start >= node.end) {
83
+ trailingComments = this.state.trailingComments;
84
+ this.state.trailingComments = [];
85
+ } else {
86
+ this.state.trailingComments.length = 0;
87
+ }
88
+ } else if (stack.length > 0) {
89
+ const lastInStack = last(stack);
90
+
91
+ if (lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) {
92
+ trailingComments = lastInStack.trailingComments;
93
+ delete lastInStack.trailingComments;
94
+ }
95
+ }
96
+
97
+ if (stack.length > 0 && last(stack).start >= node.start) {
98
+ firstChild = stack.pop();
99
+ }
100
+
101
+ while (stack.length > 0 && last(stack).start >= node.start) {
102
+ lastChild = stack.pop();
103
+ }
104
+
105
+ if (!lastChild && firstChild) lastChild = firstChild;
106
+
107
+ if (firstChild) {
108
+ switch (node.type) {
109
+ case "ObjectExpression":
110
+ this.adjustCommentsAfterTrailingComma(node, node.properties);
111
+ break;
112
+
113
+ case "ObjectPattern":
114
+ this.adjustCommentsAfterTrailingComma(node, node.properties, true);
115
+ break;
116
+
117
+ case "CallExpression":
118
+ this.adjustCommentsAfterTrailingComma(node, node.arguments);
119
+ break;
120
+
121
+ case "ArrayExpression":
122
+ this.adjustCommentsAfterTrailingComma(node, node.elements);
123
+ break;
124
+
125
+ case "ArrayPattern":
126
+ this.adjustCommentsAfterTrailingComma(node, node.elements, true);
127
+ break;
128
+ }
129
+ } else if (this.state.commentPreviousNode && (this.state.commentPreviousNode.type === "ImportSpecifier" && node.type !== "ImportSpecifier" || this.state.commentPreviousNode.type === "ExportSpecifier" && node.type !== "ExportSpecifier")) {
130
+ this.adjustCommentsAfterTrailingComma(node, [this.state.commentPreviousNode], true);
131
+ }
132
+
133
+ if (lastChild) {
134
+ if (lastChild.leadingComments) {
135
+ if (lastChild !== node && lastChild.leadingComments.length > 0 && last(lastChild.leadingComments).end <= node.start) {
136
+ node.leadingComments = lastChild.leadingComments;
137
+ delete lastChild.leadingComments;
138
+ } else {
139
+ for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {
140
+ if (lastChild.leadingComments[i].end <= node.start) {
141
+ node.leadingComments = lastChild.leadingComments.splice(0, i + 1);
142
+ break;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ } else if (this.state.leadingComments.length > 0) {
148
+ if (last(this.state.leadingComments).end <= node.start) {
149
+ if (this.state.commentPreviousNode) {
150
+ for (j = 0; j < this.state.leadingComments.length; j++) {
151
+ if (this.state.leadingComments[j].end < this.state.commentPreviousNode.end) {
152
+ this.state.leadingComments.splice(j, 1);
153
+ j--;
154
+ }
155
+ }
156
+ }
157
+
158
+ if (this.state.leadingComments.length > 0) {
159
+ node.leadingComments = this.state.leadingComments;
160
+ this.state.leadingComments = [];
161
+ }
162
+ } else {
163
+ for (i = 0; i < this.state.leadingComments.length; i++) {
164
+ if (this.state.leadingComments[i].end > node.start) {
165
+ break;
166
+ }
167
+ }
168
+
169
+ const leadingComments = this.state.leadingComments.slice(0, i);
170
+
171
+ if (leadingComments.length) {
172
+ node.leadingComments = leadingComments;
173
+ }
174
+
175
+ trailingComments = this.state.leadingComments.slice(i);
176
+
177
+ if (trailingComments.length === 0) {
178
+ trailingComments = null;
179
+ }
180
+ }
181
+ }
182
+
183
+ this.state.commentPreviousNode = node;
184
+
185
+ if (trailingComments) {
186
+ if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) {
187
+ node.innerComments = trailingComments;
188
+ } else {
189
+ node.trailingComments = trailingComments;
190
+ }
191
+ }
192
+
193
+ stack.push(node);
194
+ }
195
+
196
+ }
197
+
198
+ exports.default = CommentsParser;
@@ -0,0 +1,1703 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _types = require("../tokenizer/types");
9
+
10
+ var _context = require("../tokenizer/context");
11
+
12
+ var N = _interopRequireWildcard(require("../types"));
13
+
14
+ var _lval = _interopRequireDefault(require("./lval"));
15
+
16
+ var _identifier = require("../util/identifier");
17
+
18
+ var _scopeflags = require("../util/scopeflags");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
23
+
24
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ class ExpressionParser extends _lval.default {
27
+ checkDuplicatedProto(prop, protoRef) {
28
+ if (prop.type === "SpreadElement" || prop.computed || prop.kind || prop.shorthand) {
29
+ return;
30
+ }
31
+
32
+ const key = prop.key;
33
+ const name = key.type === "Identifier" ? key.name : String(key.value);
34
+
35
+ if (name === "__proto__") {
36
+ if (protoRef.used && !protoRef.start) {
37
+ protoRef.start = key.start;
38
+ }
39
+
40
+ protoRef.used = true;
41
+ }
42
+ }
43
+
44
+ getExpression() {
45
+ this.scope.enter(_scopeflags.SCOPE_PROGRAM);
46
+ this.nextToken();
47
+ const expr = this.parseExpression();
48
+
49
+ if (!this.match(_types.types.eof)) {
50
+ this.unexpected();
51
+ }
52
+
53
+ expr.comments = this.state.comments;
54
+ expr.errors = this.state.errors;
55
+ return expr;
56
+ }
57
+
58
+ parseExpression(noIn, refShorthandDefaultPos) {
59
+ const startPos = this.state.start;
60
+ const startLoc = this.state.startLoc;
61
+ const expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos);
62
+
63
+ if (this.match(_types.types.comma)) {
64
+ const node = this.startNodeAt(startPos, startLoc);
65
+ node.expressions = [expr];
66
+
67
+ while (this.eat(_types.types.comma)) {
68
+ node.expressions.push(this.parseMaybeAssign(noIn, refShorthandDefaultPos));
69
+ }
70
+
71
+ this.toReferencedList(node.expressions);
72
+ return this.finishNode(node, "SequenceExpression");
73
+ }
74
+
75
+ return expr;
76
+ }
77
+
78
+ parseMaybeAssign(noIn, refShorthandDefaultPos, afterLeftParse, refNeedsArrowPos) {
79
+ const startPos = this.state.start;
80
+ const startLoc = this.state.startLoc;
81
+
82
+ if (this.isContextual("yield")) {
83
+ if (this.scope.inGenerator) {
84
+ let left = this.parseYield(noIn);
85
+
86
+ if (afterLeftParse) {
87
+ left = afterLeftParse.call(this, left, startPos, startLoc);
88
+ }
89
+
90
+ return left;
91
+ } else {
92
+ this.state.exprAllowed = false;
93
+ }
94
+ }
95
+
96
+ let failOnShorthandAssign;
97
+
98
+ if (refShorthandDefaultPos) {
99
+ failOnShorthandAssign = false;
100
+ } else {
101
+ refShorthandDefaultPos = {
102
+ start: 0
103
+ };
104
+ failOnShorthandAssign = true;
105
+ }
106
+
107
+ if (this.match(_types.types.parenL) || this.match(_types.types.name)) {
108
+ this.state.potentialArrowAt = this.state.start;
109
+ }
110
+
111
+ let left = this.parseMaybeConditional(noIn, refShorthandDefaultPos, refNeedsArrowPos);
112
+
113
+ if (afterLeftParse) {
114
+ left = afterLeftParse.call(this, left, startPos, startLoc);
115
+ }
116
+
117
+ if (this.state.type.isAssign) {
118
+ const node = this.startNodeAt(startPos, startLoc);
119
+ const operator = this.state.value;
120
+ node.operator = operator;
121
+
122
+ if (operator === "??=") {
123
+ this.expectPlugin("nullishCoalescingOperator");
124
+ this.expectPlugin("logicalAssignment");
125
+ }
126
+
127
+ if (operator === "||=" || operator === "&&=") {
128
+ this.expectPlugin("logicalAssignment");
129
+ }
130
+
131
+ node.left = this.match(_types.types.eq) ? this.toAssignable(left, undefined, "assignment expression") : left;
132
+
133
+ if (refShorthandDefaultPos.start >= node.left.start) {
134
+ refShorthandDefaultPos.start = 0;
135
+ }
136
+
137
+ this.checkLVal(left, undefined, undefined, "assignment expression");
138
+ this.next();
139
+ node.right = this.parseMaybeAssign(noIn);
140
+ return this.finishNode(node, "AssignmentExpression");
141
+ } else if (failOnShorthandAssign && refShorthandDefaultPos.start) {
142
+ this.unexpected(refShorthandDefaultPos.start);
143
+ }
144
+
145
+ return left;
146
+ }
147
+
148
+ parseMaybeConditional(noIn, refShorthandDefaultPos, refNeedsArrowPos) {
149
+ const startPos = this.state.start;
150
+ const startLoc = this.state.startLoc;
151
+ const potentialArrowAt = this.state.potentialArrowAt;
152
+ const expr = this.parseExprOps(noIn, refShorthandDefaultPos);
153
+
154
+ if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
155
+ return expr;
156
+ }
157
+
158
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;
159
+ return this.parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos);
160
+ }
161
+
162
+ parseConditional(expr, noIn, startPos, startLoc, refNeedsArrowPos) {
163
+ if (this.eat(_types.types.question)) {
164
+ const node = this.startNodeAt(startPos, startLoc);
165
+ node.test = expr;
166
+ node.consequent = this.parseMaybeAssign();
167
+ this.expect(_types.types.colon);
168
+ node.alternate = this.parseMaybeAssign(noIn);
169
+ return this.finishNode(node, "ConditionalExpression");
170
+ }
171
+
172
+ return expr;
173
+ }
174
+
175
+ parseExprOps(noIn, refShorthandDefaultPos) {
176
+ const startPos = this.state.start;
177
+ const startLoc = this.state.startLoc;
178
+ const potentialArrowAt = this.state.potentialArrowAt;
179
+ const expr = this.parseMaybeUnary(refShorthandDefaultPos);
180
+
181
+ if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
182
+ return expr;
183
+ }
184
+
185
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
186
+ return expr;
187
+ }
188
+
189
+ return this.parseExprOp(expr, startPos, startLoc, -1, noIn);
190
+ }
191
+
192
+ parseExprOp(left, leftStartPos, leftStartLoc, minPrec, noIn) {
193
+ const prec = this.state.type.binop;
194
+
195
+ if (prec != null && (!noIn || !this.match(_types.types._in))) {
196
+ if (prec > minPrec) {
197
+ const operator = this.state.value;
198
+
199
+ if (operator === "|>" && this.state.inFSharpPipelineDirectBody) {
200
+ return left;
201
+ }
202
+
203
+ const node = this.startNodeAt(leftStartPos, leftStartLoc);
204
+ node.left = left;
205
+ node.operator = operator;
206
+
207
+ if (operator === "**" && left.type === "UnaryExpression" && (this.options.createParenthesizedExpressions || !(left.extra && left.extra.parenthesized))) {
208
+ this.raise(left.argument.start, "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");
209
+ }
210
+
211
+ const op = this.state.type;
212
+
213
+ if (op === _types.types.pipeline) {
214
+ this.expectPlugin("pipelineOperator");
215
+ this.state.inPipeline = true;
216
+ this.checkPipelineAtInfixOperator(left, leftStartPos);
217
+ } else if (op === _types.types.nullishCoalescing) {
218
+ this.expectPlugin("nullishCoalescingOperator");
219
+ }
220
+
221
+ this.next();
222
+
223
+ if (op === _types.types.pipeline && this.getPluginOption("pipelineOperator", "proposal") === "minimal") {
224
+ if (this.match(_types.types.name) && this.state.value === "await" && this.scope.inAsync) {
225
+ throw this.raise(this.state.start, `Unexpected "await" after pipeline body; await must have parentheses in minimal proposal`);
226
+ }
227
+ }
228
+
229
+ node.right = this.parseExprOpRightExpr(op, prec, noIn);
230
+
231
+ if (op === _types.types.nullishCoalescing) {
232
+ if (left.type === "LogicalExpression" && left.operator !== "??" && !(left.extra && left.extra.parenthesized)) {
233
+ throw this.raise(left.start, `Nullish coalescing operator(??) requires parens when mixing with logical operators`);
234
+ } else if (node.right.type === "LogicalExpression" && node.right.operator !== "??" && !(node.right.extra && node.right.extra.parenthesized)) {
235
+ throw this.raise(node.right.start, `Nullish coalescing operator(??) requires parens when mixing with logical operators`);
236
+ }
237
+ }
238
+
239
+ this.finishNode(node, op === _types.types.logicalOR || op === _types.types.logicalAND || op === _types.types.nullishCoalescing ? "LogicalExpression" : "BinaryExpression");
240
+ return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
241
+ }
242
+ }
243
+
244
+ return left;
245
+ }
246
+
247
+ parseExprOpRightExpr(op, prec, noIn) {
248
+ const startPos = this.state.start;
249
+ const startLoc = this.state.startLoc;
250
+
251
+ switch (op) {
252
+ case _types.types.pipeline:
253
+ switch (this.getPluginOption("pipelineOperator", "proposal")) {
254
+ case "smart":
255
+ return this.withTopicPermittingContext(() => {
256
+ return this.parseSmartPipelineBody(this.parseExprOpBaseRightExpr(op, prec, noIn), startPos, startLoc);
257
+ });
258
+
259
+ case "fsharp":
260
+ return this.withSoloAwaitPermittingContext(() => {
261
+ return this.parseFSharpPipelineBody(prec, noIn);
262
+ });
263
+ }
264
+
265
+ default:
266
+ return this.parseExprOpBaseRightExpr(op, prec, noIn);
267
+ }
268
+ }
269
+
270
+ parseExprOpBaseRightExpr(op, prec, noIn) {
271
+ const startPos = this.state.start;
272
+ const startLoc = this.state.startLoc;
273
+ return this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn);
274
+ }
275
+
276
+ parseMaybeUnary(refShorthandDefaultPos) {
277
+ if (this.isContextual("await") && this.isAwaitAllowed()) {
278
+ return this.parseAwait();
279
+ } else if (this.state.type.prefix) {
280
+ const node = this.startNode();
281
+ const update = this.match(_types.types.incDec);
282
+ node.operator = this.state.value;
283
+ node.prefix = true;
284
+
285
+ if (node.operator === "throw") {
286
+ this.expectPlugin("throwExpressions");
287
+ }
288
+
289
+ this.next();
290
+ node.argument = this.parseMaybeUnary();
291
+
292
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
293
+ this.unexpected(refShorthandDefaultPos.start);
294
+ }
295
+
296
+ if (update) {
297
+ this.checkLVal(node.argument, undefined, undefined, "prefix operation");
298
+ } else if (this.state.strict && node.operator === "delete") {
299
+ const arg = node.argument;
300
+
301
+ if (arg.type === "Identifier") {
302
+ this.raise(node.start, "Deleting local variable in strict mode");
303
+ } else if (arg.type === "MemberExpression" && arg.property.type === "PrivateName") {
304
+ this.raise(node.start, "Deleting a private field is not allowed");
305
+ }
306
+ }
307
+
308
+ return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
309
+ }
310
+
311
+ const startPos = this.state.start;
312
+ const startLoc = this.state.startLoc;
313
+ let expr = this.parseExprSubscripts(refShorthandDefaultPos);
314
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;
315
+
316
+ while (this.state.type.postfix && !this.canInsertSemicolon()) {
317
+ const node = this.startNodeAt(startPos, startLoc);
318
+ node.operator = this.state.value;
319
+ node.prefix = false;
320
+ node.argument = expr;
321
+ this.checkLVal(expr, undefined, undefined, "postfix operation");
322
+ this.next();
323
+ expr = this.finishNode(node, "UpdateExpression");
324
+ }
325
+
326
+ return expr;
327
+ }
328
+
329
+ parseExprSubscripts(refShorthandDefaultPos) {
330
+ const startPos = this.state.start;
331
+ const startLoc = this.state.startLoc;
332
+ const potentialArrowAt = this.state.potentialArrowAt;
333
+ const expr = this.parseExprAtom(refShorthandDefaultPos);
334
+
335
+ if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
336
+ return expr;
337
+ }
338
+
339
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
340
+ return expr;
341
+ }
342
+
343
+ return this.parseSubscripts(expr, startPos, startLoc);
344
+ }
345
+
346
+ parseSubscripts(base, startPos, startLoc, noCalls) {
347
+ const state = {
348
+ optionalChainMember: false,
349
+ maybeAsyncArrow: this.atPossibleAsync(base),
350
+ stop: false
351
+ };
352
+
353
+ do {
354
+ base = this.parseSubscript(base, startPos, startLoc, noCalls, state);
355
+ state.maybeAsyncArrow = false;
356
+ } while (!state.stop);
357
+
358
+ return base;
359
+ }
360
+
361
+ parseSubscript(base, startPos, startLoc, noCalls, state) {
362
+ if (!noCalls && this.eat(_types.types.doubleColon)) {
363
+ const node = this.startNodeAt(startPos, startLoc);
364
+ node.object = base;
365
+ node.callee = this.parseNoCallExpr();
366
+ state.stop = true;
367
+ return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls);
368
+ } else if (this.match(_types.types.questionDot)) {
369
+ this.expectPlugin("optionalChaining");
370
+ state.optionalChainMember = true;
371
+
372
+ if (noCalls && this.lookaheadCharCode() === 40) {
373
+ state.stop = true;
374
+ return base;
375
+ }
376
+
377
+ this.next();
378
+ const node = this.startNodeAt(startPos, startLoc);
379
+
380
+ if (this.eat(_types.types.bracketL)) {
381
+ node.object = base;
382
+ node.property = this.parseExpression();
383
+ node.computed = true;
384
+ node.optional = true;
385
+ this.expect(_types.types.bracketR);
386
+ return this.finishNode(node, "OptionalMemberExpression");
387
+ } else if (this.eat(_types.types.parenL)) {
388
+ node.callee = base;
389
+ node.arguments = this.parseCallExpressionArguments(_types.types.parenR, false);
390
+ node.optional = true;
391
+ return this.finishCallExpression(node, true);
392
+ } else {
393
+ node.object = base;
394
+ node.property = this.parseIdentifier(true);
395
+ node.computed = false;
396
+ node.optional = true;
397
+ return this.finishNode(node, "OptionalMemberExpression");
398
+ }
399
+ } else if (this.eat(_types.types.dot)) {
400
+ const node = this.startNodeAt(startPos, startLoc);
401
+ node.object = base;
402
+ node.property = this.parseMaybePrivateName();
403
+ node.computed = false;
404
+
405
+ if (node.property.type === "PrivateName" && node.object.type === "Super") {
406
+ this.raise(startPos, "Private fields can't be accessed on super");
407
+ }
408
+
409
+ if (state.optionalChainMember) {
410
+ node.optional = false;
411
+ return this.finishNode(node, "OptionalMemberExpression");
412
+ }
413
+
414
+ return this.finishNode(node, "MemberExpression");
415
+ } else if (this.eat(_types.types.bracketL)) {
416
+ const node = this.startNodeAt(startPos, startLoc);
417
+ node.object = base;
418
+ node.property = this.parseExpression();
419
+ node.computed = true;
420
+ this.expect(_types.types.bracketR);
421
+
422
+ if (state.optionalChainMember) {
423
+ node.optional = false;
424
+ return this.finishNode(node, "OptionalMemberExpression");
425
+ }
426
+
427
+ return this.finishNode(node, "MemberExpression");
428
+ } else if (!noCalls && this.match(_types.types.parenL)) {
429
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
430
+ const oldYieldPos = this.state.yieldPos;
431
+ const oldAwaitPos = this.state.awaitPos;
432
+ this.state.maybeInArrowParameters = true;
433
+ this.state.yieldPos = -1;
434
+ this.state.awaitPos = -1;
435
+ this.next();
436
+ let node = this.startNodeAt(startPos, startLoc);
437
+ node.callee = base;
438
+ node.arguments = this.parseCallExpressionArguments(_types.types.parenR, state.maybeAsyncArrow, base.type === "Import", base.type !== "Super", node);
439
+ this.finishCallExpression(node, state.optionalChainMember);
440
+
441
+ if (state.maybeAsyncArrow && this.shouldParseAsyncArrow()) {
442
+ state.stop = true;
443
+ node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);
444
+ this.checkYieldAwaitInDefaultParams();
445
+ this.state.yieldPos = oldYieldPos;
446
+ this.state.awaitPos = oldAwaitPos;
447
+ } else {
448
+ this.toReferencedListDeep(node.arguments);
449
+ if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
450
+
451
+ if (!this.isAwaitAllowed() && !oldMaybeInArrowParameters || oldAwaitPos !== -1) {
452
+ this.state.awaitPos = oldAwaitPos;
453
+ }
454
+ }
455
+
456
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
457
+ return node;
458
+ } else if (this.match(_types.types.backQuote)) {
459
+ return this.parseTaggedTemplateExpression(startPos, startLoc, base, state);
460
+ } else {
461
+ state.stop = true;
462
+ return base;
463
+ }
464
+ }
465
+
466
+ parseTaggedTemplateExpression(startPos, startLoc, base, state, typeArguments) {
467
+ const node = this.startNodeAt(startPos, startLoc);
468
+ node.tag = base;
469
+ node.quasi = this.parseTemplate(true);
470
+ if (typeArguments) node.typeParameters = typeArguments;
471
+
472
+ if (state.optionalChainMember) {
473
+ this.raise(startPos, "Tagged Template Literals are not allowed in optionalChain");
474
+ }
475
+
476
+ return this.finishNode(node, "TaggedTemplateExpression");
477
+ }
478
+
479
+ atPossibleAsync(base) {
480
+ return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
481
+ }
482
+
483
+ finishCallExpression(node, optional) {
484
+ if (node.callee.type === "Import") {
485
+ if (node.arguments.length !== 1) {
486
+ this.raise(node.start, "import() requires exactly one argument");
487
+ } else {
488
+ const importArg = node.arguments[0];
489
+
490
+ if (importArg && importArg.type === "SpreadElement") {
491
+ this.raise(importArg.start, "... is not allowed in import()");
492
+ }
493
+ }
494
+ }
495
+
496
+ return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
497
+ }
498
+
499
+ parseCallExpressionArguments(close, possibleAsyncArrow, dynamicImport, allowPlaceholder, nodeForExtra) {
500
+ const elts = [];
501
+ let innerParenStart;
502
+ let first = true;
503
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
504
+ this.state.inFSharpPipelineDirectBody = false;
505
+
506
+ while (!this.eat(close)) {
507
+ if (first) {
508
+ first = false;
509
+ } else {
510
+ this.expect(_types.types.comma);
511
+
512
+ if (this.match(close)) {
513
+ if (dynamicImport) {
514
+ this.raise(this.state.lastTokStart, "Trailing comma is disallowed inside import(...) arguments");
515
+ }
516
+
517
+ if (nodeForExtra) {
518
+ this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
519
+ }
520
+
521
+ this.next();
522
+ break;
523
+ }
524
+ }
525
+
526
+ if (this.match(_types.types.parenL) && !innerParenStart) {
527
+ innerParenStart = this.state.start;
528
+ }
529
+
530
+ elts.push(this.parseExprListItem(false, possibleAsyncArrow ? {
531
+ start: 0
532
+ } : undefined, possibleAsyncArrow ? {
533
+ start: 0
534
+ } : undefined, allowPlaceholder));
535
+ }
536
+
537
+ if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {
538
+ this.unexpected();
539
+ }
540
+
541
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
542
+ return elts;
543
+ }
544
+
545
+ shouldParseAsyncArrow() {
546
+ return this.match(_types.types.arrow) && !this.canInsertSemicolon();
547
+ }
548
+
549
+ parseAsyncArrowFromCallExpression(node, call) {
550
+ var _call$extra;
551
+
552
+ this.expect(_types.types.arrow);
553
+ this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma);
554
+ return node;
555
+ }
556
+
557
+ parseNoCallExpr() {
558
+ const startPos = this.state.start;
559
+ const startLoc = this.state.startLoc;
560
+ return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
561
+ }
562
+
563
+ parseExprAtom(refShorthandDefaultPos) {
564
+ if (this.state.type === _types.types.slash) this.readRegexp();
565
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
566
+ let node;
567
+
568
+ switch (this.state.type) {
569
+ case _types.types._super:
570
+ node = this.startNode();
571
+ this.next();
572
+
573
+ if (this.match(_types.types.parenL) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
574
+ this.raise(node.start, "super() is only valid inside a class constructor of a subclass. " + "Maybe a typo in the method name ('constructor') or not extending another class?");
575
+ } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
576
+ this.raise(node.start, "super is only allowed in object methods and classes");
577
+ }
578
+
579
+ if (!this.match(_types.types.parenL) && !this.match(_types.types.bracketL) && !this.match(_types.types.dot)) {
580
+ this.raise(node.start, "super can only be used with function calls (i.e. super()) or " + "in property accesses (i.e. super.prop or super[prop])");
581
+ }
582
+
583
+ return this.finishNode(node, "Super");
584
+
585
+ case _types.types._import:
586
+ node = this.startNode();
587
+ this.next();
588
+
589
+ if (this.match(_types.types.dot)) {
590
+ return this.parseImportMetaProperty(node);
591
+ }
592
+
593
+ this.expectPlugin("dynamicImport", node.start);
594
+
595
+ if (!this.match(_types.types.parenL)) {
596
+ this.unexpected(null, _types.types.parenL);
597
+ }
598
+
599
+ return this.finishNode(node, "Import");
600
+
601
+ case _types.types._this:
602
+ node = this.startNode();
603
+ this.next();
604
+ return this.finishNode(node, "ThisExpression");
605
+
606
+ case _types.types.name:
607
+ {
608
+ node = this.startNode();
609
+ const containsEsc = this.state.containsEsc;
610
+ const id = this.parseIdentifier();
611
+
612
+ if (!containsEsc && id.name === "async" && this.match(_types.types._function) && !this.canInsertSemicolon()) {
613
+ const last = this.state.context.length - 1;
614
+
615
+ if (this.state.context[last] !== _context.types.functionStatement) {
616
+ throw new Error("Internal error");
617
+ }
618
+
619
+ this.state.context[last] = _context.types.functionExpression;
620
+ this.next();
621
+ return this.parseFunction(node, undefined, true);
622
+ } else if (canBeArrow && !containsEsc && id.name === "async" && this.match(_types.types.name) && !this.canInsertSemicolon()) {
623
+ const params = [this.parseIdentifier()];
624
+ this.expect(_types.types.arrow);
625
+ this.parseArrowExpression(node, params, true);
626
+ return node;
627
+ }
628
+
629
+ if (canBeArrow && this.match(_types.types.arrow) && !this.canInsertSemicolon()) {
630
+ this.next();
631
+ this.parseArrowExpression(node, [id], false);
632
+ return node;
633
+ }
634
+
635
+ return id;
636
+ }
637
+
638
+ case _types.types._do:
639
+ {
640
+ this.expectPlugin("doExpressions");
641
+ const node = this.startNode();
642
+ this.next();
643
+ const oldLabels = this.state.labels;
644
+ this.state.labels = [];
645
+ node.body = this.parseBlock();
646
+ this.state.labels = oldLabels;
647
+ return this.finishNode(node, "DoExpression");
648
+ }
649
+
650
+ case _types.types.regexp:
651
+ {
652
+ const value = this.state.value;
653
+ node = this.parseLiteral(value.value, "RegExpLiteral");
654
+ node.pattern = value.pattern;
655
+ node.flags = value.flags;
656
+ return node;
657
+ }
658
+
659
+ case _types.types.num:
660
+ return this.parseLiteral(this.state.value, "NumericLiteral");
661
+
662
+ case _types.types.bigint:
663
+ return this.parseLiteral(this.state.value, "BigIntLiteral");
664
+
665
+ case _types.types.string:
666
+ return this.parseLiteral(this.state.value, "StringLiteral");
667
+
668
+ case _types.types._null:
669
+ node = this.startNode();
670
+ this.next();
671
+ return this.finishNode(node, "NullLiteral");
672
+
673
+ case _types.types._true:
674
+ case _types.types._false:
675
+ return this.parseBooleanLiteral();
676
+
677
+ case _types.types.parenL:
678
+ return this.parseParenAndDistinguishExpression(canBeArrow);
679
+
680
+ case _types.types.bracketL:
681
+ {
682
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
683
+ this.state.inFSharpPipelineDirectBody = false;
684
+ node = this.startNode();
685
+ this.next();
686
+ node.elements = this.parseExprList(_types.types.bracketR, true, refShorthandDefaultPos, node);
687
+
688
+ if (!this.state.maybeInArrowParameters) {
689
+ this.toReferencedList(node.elements);
690
+ }
691
+
692
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
693
+ return this.finishNode(node, "ArrayExpression");
694
+ }
695
+
696
+ case _types.types.braceL:
697
+ {
698
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
699
+ this.state.inFSharpPipelineDirectBody = false;
700
+ const ret = this.parseObj(false, refShorthandDefaultPos);
701
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
702
+ return ret;
703
+ }
704
+
705
+ case _types.types._function:
706
+ return this.parseFunctionExpression();
707
+
708
+ case _types.types.at:
709
+ this.parseDecorators();
710
+
711
+ case _types.types._class:
712
+ node = this.startNode();
713
+ this.takeDecorators(node);
714
+ return this.parseClass(node, false);
715
+
716
+ case _types.types._new:
717
+ return this.parseNew();
718
+
719
+ case _types.types.backQuote:
720
+ return this.parseTemplate(false);
721
+
722
+ case _types.types.doubleColon:
723
+ {
724
+ node = this.startNode();
725
+ this.next();
726
+ node.object = null;
727
+ const callee = node.callee = this.parseNoCallExpr();
728
+
729
+ if (callee.type === "MemberExpression") {
730
+ return this.finishNode(node, "BindExpression");
731
+ } else {
732
+ throw this.raise(callee.start, "Binding should be performed on object property.");
733
+ }
734
+ }
735
+
736
+ case _types.types.hash:
737
+ {
738
+ if (this.state.inPipeline) {
739
+ node = this.startNode();
740
+
741
+ if (this.getPluginOption("pipelineOperator", "proposal") !== "smart") {
742
+ this.raise(node.start, "Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option.");
743
+ }
744
+
745
+ this.next();
746
+
747
+ if (!this.primaryTopicReferenceIsAllowedInCurrentTopicContext()) {
748
+ this.raise(node.start, `Topic reference was used in a lexical context without topic binding`);
749
+ }
750
+
751
+ this.registerTopicReference();
752
+ return this.finishNode(node, "PipelinePrimaryTopicReference");
753
+ }
754
+ }
755
+
756
+ default:
757
+ throw this.unexpected();
758
+ }
759
+ }
760
+
761
+ parseBooleanLiteral() {
762
+ const node = this.startNode();
763
+ node.value = this.match(_types.types._true);
764
+ this.next();
765
+ return this.finishNode(node, "BooleanLiteral");
766
+ }
767
+
768
+ parseMaybePrivateName() {
769
+ const isPrivate = this.match(_types.types.hash);
770
+
771
+ if (isPrivate) {
772
+ this.expectOnePlugin(["classPrivateProperties", "classPrivateMethods"]);
773
+ const node = this.startNode();
774
+ this.next();
775
+ this.assertNoSpace("Unexpected space between # and identifier");
776
+ node.id = this.parseIdentifier(true);
777
+ return this.finishNode(node, "PrivateName");
778
+ } else {
779
+ return this.parseIdentifier(true);
780
+ }
781
+ }
782
+
783
+ parseFunctionExpression() {
784
+ const node = this.startNode();
785
+ let meta = this.startNode();
786
+ this.next();
787
+ meta = this.createIdentifier(meta, "function");
788
+
789
+ if (this.scope.inGenerator && this.eat(_types.types.dot)) {
790
+ return this.parseMetaProperty(node, meta, "sent");
791
+ }
792
+
793
+ return this.parseFunction(node);
794
+ }
795
+
796
+ parseMetaProperty(node, meta, propertyName) {
797
+ node.meta = meta;
798
+
799
+ if (meta.name === "function" && propertyName === "sent") {
800
+ if (this.isContextual(propertyName)) {
801
+ this.expectPlugin("functionSent");
802
+ } else if (!this.hasPlugin("functionSent")) {
803
+ this.unexpected();
804
+ }
805
+ }
806
+
807
+ const containsEsc = this.state.containsEsc;
808
+ node.property = this.parseIdentifier(true);
809
+
810
+ if (node.property.name !== propertyName || containsEsc) {
811
+ this.raise(node.property.start, `The only valid meta property for ${meta.name} is ${meta.name}.${propertyName}`);
812
+ }
813
+
814
+ return this.finishNode(node, "MetaProperty");
815
+ }
816
+
817
+ parseImportMetaProperty(node) {
818
+ const id = this.createIdentifier(this.startNodeAtNode(node), "import");
819
+ this.expect(_types.types.dot);
820
+
821
+ if (this.isContextual("meta")) {
822
+ this.expectPlugin("importMeta");
823
+
824
+ if (!this.inModule) {
825
+ this.raise(id.start, `import.meta may appear only with 'sourceType: "module"'`, {
826
+ code: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
827
+ });
828
+ }
829
+
830
+ this.sawUnambiguousESM = true;
831
+ } else if (!this.hasPlugin("importMeta")) {
832
+ this.raise(id.start, `Dynamic imports require a parameter: import('a.js')`);
833
+ }
834
+
835
+ return this.parseMetaProperty(node, id, "meta");
836
+ }
837
+
838
+ parseLiteral(value, type, startPos, startLoc) {
839
+ startPos = startPos || this.state.start;
840
+ startLoc = startLoc || this.state.startLoc;
841
+ const node = this.startNodeAt(startPos, startLoc);
842
+ this.addExtra(node, "rawValue", value);
843
+ this.addExtra(node, "raw", this.input.slice(startPos, this.state.end));
844
+ node.value = value;
845
+ this.next();
846
+ return this.finishNode(node, type);
847
+ }
848
+
849
+ parseParenAndDistinguishExpression(canBeArrow) {
850
+ const startPos = this.state.start;
851
+ const startLoc = this.state.startLoc;
852
+ let val;
853
+ this.expect(_types.types.parenL);
854
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
855
+ const oldYieldPos = this.state.yieldPos;
856
+ const oldAwaitPos = this.state.awaitPos;
857
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
858
+ this.state.maybeInArrowParameters = true;
859
+ this.state.yieldPos = -1;
860
+ this.state.awaitPos = -1;
861
+ this.state.inFSharpPipelineDirectBody = false;
862
+ const innerStartPos = this.state.start;
863
+ const innerStartLoc = this.state.startLoc;
864
+ const exprList = [];
865
+ const refShorthandDefaultPos = {
866
+ start: 0
867
+ };
868
+ const refNeedsArrowPos = {
869
+ start: 0
870
+ };
871
+ let first = true;
872
+ let spreadStart;
873
+ let optionalCommaStart;
874
+
875
+ while (!this.match(_types.types.parenR)) {
876
+ if (first) {
877
+ first = false;
878
+ } else {
879
+ this.expect(_types.types.comma, refNeedsArrowPos.start || null);
880
+
881
+ if (this.match(_types.types.parenR)) {
882
+ optionalCommaStart = this.state.start;
883
+ break;
884
+ }
885
+ }
886
+
887
+ if (this.match(_types.types.ellipsis)) {
888
+ const spreadNodeStartPos = this.state.start;
889
+ const spreadNodeStartLoc = this.state.startLoc;
890
+ spreadStart = this.state.start;
891
+ exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));
892
+ this.checkCommaAfterRest(41);
893
+ break;
894
+ } else {
895
+ exprList.push(this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem, refNeedsArrowPos));
896
+ }
897
+ }
898
+
899
+ const innerEndPos = this.state.start;
900
+ const innerEndLoc = this.state.startLoc;
901
+ this.expect(_types.types.parenR);
902
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
903
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
904
+ let arrowNode = this.startNodeAt(startPos, startLoc);
905
+
906
+ if (canBeArrow && this.shouldParseArrow() && (arrowNode = this.parseArrow(arrowNode))) {
907
+ this.checkYieldAwaitInDefaultParams();
908
+ this.state.yieldPos = oldYieldPos;
909
+ this.state.awaitPos = oldAwaitPos;
910
+
911
+ for (let _i = 0; _i < exprList.length; _i++) {
912
+ const param = exprList[_i];
913
+
914
+ if (param.extra && param.extra.parenthesized) {
915
+ this.unexpected(param.extra.parenStart);
916
+ }
917
+ }
918
+
919
+ this.parseArrowExpression(arrowNode, exprList, false);
920
+ return arrowNode;
921
+ }
922
+
923
+ if (oldYieldPos !== -1) this.state.yieldPos = oldYieldPos;
924
+ if (oldAwaitPos !== -1) this.state.awaitPos = oldAwaitPos;
925
+
926
+ if (!exprList.length) {
927
+ this.unexpected(this.state.lastTokStart);
928
+ }
929
+
930
+ if (optionalCommaStart) this.unexpected(optionalCommaStart);
931
+ if (spreadStart) this.unexpected(spreadStart);
932
+
933
+ if (refShorthandDefaultPos.start) {
934
+ this.unexpected(refShorthandDefaultPos.start);
935
+ }
936
+
937
+ if (refNeedsArrowPos.start) this.unexpected(refNeedsArrowPos.start);
938
+ this.toReferencedListDeep(exprList, true);
939
+
940
+ if (exprList.length > 1) {
941
+ val = this.startNodeAt(innerStartPos, innerStartLoc);
942
+ val.expressions = exprList;
943
+ this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc);
944
+ } else {
945
+ val = exprList[0];
946
+ }
947
+
948
+ if (!this.options.createParenthesizedExpressions) {
949
+ this.addExtra(val, "parenthesized", true);
950
+ this.addExtra(val, "parenStart", startPos);
951
+ return val;
952
+ }
953
+
954
+ const parenExpression = this.startNodeAt(startPos, startLoc);
955
+ parenExpression.expression = val;
956
+ this.finishNode(parenExpression, "ParenthesizedExpression");
957
+ return parenExpression;
958
+ }
959
+
960
+ shouldParseArrow() {
961
+ return !this.canInsertSemicolon();
962
+ }
963
+
964
+ parseArrow(node) {
965
+ if (this.eat(_types.types.arrow)) {
966
+ return node;
967
+ }
968
+ }
969
+
970
+ parseParenItem(node, startPos, startLoc) {
971
+ return node;
972
+ }
973
+
974
+ parseNew() {
975
+ const node = this.startNode();
976
+ let meta = this.startNode();
977
+ this.next();
978
+ meta = this.createIdentifier(meta, "new");
979
+
980
+ if (this.eat(_types.types.dot)) {
981
+ const metaProp = this.parseMetaProperty(node, meta, "target");
982
+
983
+ if (!this.scope.inNonArrowFunction && !this.state.inClassProperty) {
984
+ let error = "new.target can only be used in functions";
985
+
986
+ if (this.hasPlugin("classProperties")) {
987
+ error += " or class properties";
988
+ }
989
+
990
+ this.raise(metaProp.start, error);
991
+ }
992
+
993
+ return metaProp;
994
+ }
995
+
996
+ node.callee = this.parseNoCallExpr();
997
+
998
+ if (node.callee.type === "Import") {
999
+ this.raise(node.callee.start, "Cannot use new with import(...)");
1000
+ } else if (node.callee.type === "OptionalMemberExpression" || node.callee.type === "OptionalCallExpression") {
1001
+ this.raise(this.state.lastTokEnd, "constructors in/after an Optional Chain are not allowed");
1002
+ } else if (this.eat(_types.types.questionDot)) {
1003
+ this.raise(this.state.start, "constructors in/after an Optional Chain are not allowed");
1004
+ }
1005
+
1006
+ this.parseNewArguments(node);
1007
+ return this.finishNode(node, "NewExpression");
1008
+ }
1009
+
1010
+ parseNewArguments(node) {
1011
+ if (this.eat(_types.types.parenL)) {
1012
+ const args = this.parseExprList(_types.types.parenR);
1013
+ this.toReferencedList(args);
1014
+ node.arguments = args;
1015
+ } else {
1016
+ node.arguments = [];
1017
+ }
1018
+ }
1019
+
1020
+ parseTemplateElement(isTagged) {
1021
+ const elem = this.startNode();
1022
+
1023
+ if (this.state.value === null) {
1024
+ if (!isTagged) {
1025
+ this.raise(this.state.invalidTemplateEscapePosition || 0, "Invalid escape sequence in template");
1026
+ } else {
1027
+ this.state.invalidTemplateEscapePosition = null;
1028
+ }
1029
+ }
1030
+
1031
+ elem.value = {
1032
+ raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"),
1033
+ cooked: this.state.value
1034
+ };
1035
+ this.next();
1036
+ elem.tail = this.match(_types.types.backQuote);
1037
+ return this.finishNode(elem, "TemplateElement");
1038
+ }
1039
+
1040
+ parseTemplate(isTagged) {
1041
+ const node = this.startNode();
1042
+ this.next();
1043
+ node.expressions = [];
1044
+ let curElt = this.parseTemplateElement(isTagged);
1045
+ node.quasis = [curElt];
1046
+
1047
+ while (!curElt.tail) {
1048
+ this.expect(_types.types.dollarBraceL);
1049
+ node.expressions.push(this.parseExpression());
1050
+ this.expect(_types.types.braceR);
1051
+ node.quasis.push(curElt = this.parseTemplateElement(isTagged));
1052
+ }
1053
+
1054
+ this.next();
1055
+ return this.finishNode(node, "TemplateLiteral");
1056
+ }
1057
+
1058
+ parseObj(isPattern, refShorthandDefaultPos) {
1059
+ const propHash = Object.create(null);
1060
+ let first = true;
1061
+ const node = this.startNode();
1062
+ node.properties = [];
1063
+ this.next();
1064
+
1065
+ while (!this.eat(_types.types.braceR)) {
1066
+ if (first) {
1067
+ first = false;
1068
+ } else {
1069
+ this.expect(_types.types.comma);
1070
+
1071
+ if (this.match(_types.types.braceR)) {
1072
+ this.addExtra(node, "trailingComma", this.state.lastTokStart);
1073
+ this.next();
1074
+ break;
1075
+ }
1076
+ }
1077
+
1078
+ const prop = this.parseObjectMember(isPattern, refShorthandDefaultPos);
1079
+ if (!isPattern) this.checkDuplicatedProto(prop, propHash);
1080
+
1081
+ if (prop.shorthand) {
1082
+ this.addExtra(prop, "shorthand", true);
1083
+ }
1084
+
1085
+ node.properties.push(prop);
1086
+ }
1087
+
1088
+ if (!this.match(_types.types.eq) && propHash.start !== undefined) {
1089
+ this.raise(propHash.start, "Redefinition of __proto__ property");
1090
+ }
1091
+
1092
+ return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression");
1093
+ }
1094
+
1095
+ isAsyncProp(prop) {
1096
+ return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && (this.match(_types.types.name) || this.match(_types.types.num) || this.match(_types.types.string) || this.match(_types.types.bracketL) || this.state.type.keyword || this.match(_types.types.star)) && !this.hasPrecedingLineBreak();
1097
+ }
1098
+
1099
+ parseObjectMember(isPattern, refShorthandDefaultPos) {
1100
+ let decorators = [];
1101
+
1102
+ if (this.match(_types.types.at)) {
1103
+ if (this.hasPlugin("decorators")) {
1104
+ this.raise(this.state.start, "Stage 2 decorators disallow object literal property decorators");
1105
+ }
1106
+
1107
+ while (this.match(_types.types.at)) {
1108
+ decorators.push(this.parseDecorator());
1109
+ }
1110
+ }
1111
+
1112
+ const prop = this.startNode();
1113
+ let isGenerator = false;
1114
+ let isAsync = false;
1115
+ let startPos;
1116
+ let startLoc;
1117
+
1118
+ if (this.match(_types.types.ellipsis)) {
1119
+ if (decorators.length) this.unexpected();
1120
+
1121
+ if (isPattern) {
1122
+ this.next();
1123
+ prop.argument = this.parseIdentifier();
1124
+ this.checkCommaAfterRest(125);
1125
+ return this.finishNode(prop, "RestElement");
1126
+ }
1127
+
1128
+ return this.parseSpread();
1129
+ }
1130
+
1131
+ if (decorators.length) {
1132
+ prop.decorators = decorators;
1133
+ decorators = [];
1134
+ }
1135
+
1136
+ prop.method = false;
1137
+
1138
+ if (isPattern || refShorthandDefaultPos) {
1139
+ startPos = this.state.start;
1140
+ startLoc = this.state.startLoc;
1141
+ }
1142
+
1143
+ if (!isPattern) {
1144
+ isGenerator = this.eat(_types.types.star);
1145
+ }
1146
+
1147
+ const containsEsc = this.state.containsEsc;
1148
+ this.parsePropertyName(prop);
1149
+
1150
+ if (!isPattern && !containsEsc && !isGenerator && this.isAsyncProp(prop)) {
1151
+ isAsync = true;
1152
+ isGenerator = this.eat(_types.types.star);
1153
+ this.parsePropertyName(prop);
1154
+ } else {
1155
+ isAsync = false;
1156
+ }
1157
+
1158
+ this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc);
1159
+ return prop;
1160
+ }
1161
+
1162
+ isGetterOrSetterMethod(prop, isPattern) {
1163
+ return !isPattern && !prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && (this.match(_types.types.string) || this.match(_types.types.num) || this.match(_types.types.bracketL) || this.match(_types.types.name) || !!this.state.type.keyword);
1164
+ }
1165
+
1166
+ getGetterSetterExpectedParamCount(method) {
1167
+ return method.kind === "get" ? 0 : 1;
1168
+ }
1169
+
1170
+ checkGetterSetterParams(method) {
1171
+ const paramCount = this.getGetterSetterExpectedParamCount(method);
1172
+ const start = method.start;
1173
+
1174
+ if (method.params.length !== paramCount) {
1175
+ if (method.kind === "get") {
1176
+ this.raise(start, "getter must not have any formal parameters");
1177
+ } else {
1178
+ this.raise(start, "setter must have exactly one formal parameter");
1179
+ }
1180
+ }
1181
+
1182
+ if (method.kind === "set" && method.params[method.params.length - 1].type === "RestElement") {
1183
+ this.raise(start, "setter function argument must not be a rest parameter");
1184
+ }
1185
+ }
1186
+
1187
+ parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) {
1188
+ if (isAsync || isGenerator || this.match(_types.types.parenL)) {
1189
+ if (isPattern) this.unexpected();
1190
+ prop.kind = "method";
1191
+ prop.method = true;
1192
+ return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
1193
+ }
1194
+
1195
+ if (!containsEsc && this.isGetterOrSetterMethod(prop, isPattern)) {
1196
+ if (isGenerator || isAsync) this.unexpected();
1197
+ prop.kind = prop.key.name;
1198
+ this.parsePropertyName(prop);
1199
+ this.parseMethod(prop, false, false, false, false, "ObjectMethod");
1200
+ this.checkGetterSetterParams(prop);
1201
+ return prop;
1202
+ }
1203
+ }
1204
+
1205
+ parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos) {
1206
+ prop.shorthand = false;
1207
+
1208
+ if (this.eat(_types.types.colon)) {
1209
+ prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refShorthandDefaultPos);
1210
+ return this.finishNode(prop, "ObjectProperty");
1211
+ }
1212
+
1213
+ if (!prop.computed && prop.key.type === "Identifier") {
1214
+ this.checkReservedWord(prop.key.name, prop.key.start, true, true);
1215
+
1216
+ if (isPattern) {
1217
+ prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
1218
+ } else if (this.match(_types.types.eq) && refShorthandDefaultPos) {
1219
+ if (!refShorthandDefaultPos.start) {
1220
+ refShorthandDefaultPos.start = this.state.start;
1221
+ }
1222
+
1223
+ prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
1224
+ } else {
1225
+ prop.value = prop.key.__clone();
1226
+ }
1227
+
1228
+ prop.shorthand = true;
1229
+ return this.finishNode(prop, "ObjectProperty");
1230
+ }
1231
+ }
1232
+
1233
+ parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos, containsEsc) {
1234
+ const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, containsEsc) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refShorthandDefaultPos);
1235
+ if (!node) this.unexpected();
1236
+ return node;
1237
+ }
1238
+
1239
+ parsePropertyName(prop) {
1240
+ if (this.eat(_types.types.bracketL)) {
1241
+ prop.computed = true;
1242
+ prop.key = this.parseMaybeAssign();
1243
+ this.expect(_types.types.bracketR);
1244
+ } else {
1245
+ const oldInPropertyName = this.state.inPropertyName;
1246
+ this.state.inPropertyName = true;
1247
+ prop.key = this.match(_types.types.num) || this.match(_types.types.string) ? this.parseExprAtom() : this.parseMaybePrivateName();
1248
+
1249
+ if (prop.key.type !== "PrivateName") {
1250
+ prop.computed = false;
1251
+ }
1252
+
1253
+ this.state.inPropertyName = oldInPropertyName;
1254
+ }
1255
+
1256
+ return prop.key;
1257
+ }
1258
+
1259
+ initFunction(node, isAsync) {
1260
+ node.id = null;
1261
+ node.generator = false;
1262
+ node.async = !!isAsync;
1263
+ }
1264
+
1265
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
1266
+ const oldYieldPos = this.state.yieldPos;
1267
+ const oldAwaitPos = this.state.awaitPos;
1268
+ this.state.yieldPos = -1;
1269
+ this.state.awaitPos = -1;
1270
+ this.initFunction(node, isAsync);
1271
+ node.generator = !!isGenerator;
1272
+ const allowModifiers = isConstructor;
1273
+ this.scope.enter((0, _scopeflags.functionFlags)(isAsync, node.generator) | _scopeflags.SCOPE_SUPER | (inClassScope ? _scopeflags.SCOPE_CLASS : 0) | (allowDirectSuper ? _scopeflags.SCOPE_DIRECT_SUPER : 0));
1274
+ this.parseFunctionParams(node, allowModifiers);
1275
+ this.checkYieldAwaitInDefaultParams();
1276
+ this.parseFunctionBodyAndFinish(node, type, true);
1277
+ this.scope.exit();
1278
+ this.state.yieldPos = oldYieldPos;
1279
+ this.state.awaitPos = oldAwaitPos;
1280
+ return node;
1281
+ }
1282
+
1283
+ parseArrowExpression(node, params, isAsync, trailingCommaPos) {
1284
+ this.scope.enter((0, _scopeflags.functionFlags)(isAsync, false) | _scopeflags.SCOPE_ARROW);
1285
+ this.initFunction(node, isAsync);
1286
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
1287
+ const oldYieldPos = this.state.yieldPos;
1288
+ const oldAwaitPos = this.state.awaitPos;
1289
+ this.state.maybeInArrowParameters = false;
1290
+ this.state.yieldPos = -1;
1291
+ this.state.awaitPos = -1;
1292
+ if (params) this.setArrowFunctionParameters(node, params, trailingCommaPos);
1293
+ this.parseFunctionBody(node, true);
1294
+ this.scope.exit();
1295
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
1296
+ this.state.yieldPos = oldYieldPos;
1297
+ this.state.awaitPos = oldAwaitPos;
1298
+ return this.finishNode(node, "ArrowFunctionExpression");
1299
+ }
1300
+
1301
+ setArrowFunctionParameters(node, params, trailingCommaPos) {
1302
+ node.params = this.toAssignableList(params, true, "arrow function parameters", trailingCommaPos);
1303
+ }
1304
+
1305
+ isStrictBody(node) {
1306
+ const isBlockStatement = node.body.type === "BlockStatement";
1307
+
1308
+ if (isBlockStatement && node.body.directives.length) {
1309
+ for (let _i2 = 0, _node$body$directives = node.body.directives; _i2 < _node$body$directives.length; _i2++) {
1310
+ const directive = _node$body$directives[_i2];
1311
+
1312
+ if (directive.value.value === "use strict") {
1313
+ return true;
1314
+ }
1315
+ }
1316
+ }
1317
+
1318
+ return false;
1319
+ }
1320
+
1321
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
1322
+ this.parseFunctionBody(node, false, isMethod);
1323
+ this.finishNode(node, type);
1324
+ }
1325
+
1326
+ parseFunctionBody(node, allowExpression, isMethod = false) {
1327
+ const isExpression = allowExpression && !this.match(_types.types.braceL);
1328
+ const oldStrict = this.state.strict;
1329
+ let useStrict = false;
1330
+ const oldInParameters = this.state.inParameters;
1331
+ this.state.inParameters = false;
1332
+
1333
+ if (isExpression) {
1334
+ node.body = this.parseMaybeAssign();
1335
+ this.checkParams(node, false, allowExpression, false);
1336
+ } else {
1337
+ const nonSimple = !this.isSimpleParamList(node.params);
1338
+
1339
+ if (!oldStrict || nonSimple) {
1340
+ useStrict = this.strictDirective(this.state.end);
1341
+
1342
+ if (useStrict && nonSimple) {
1343
+ const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start;
1344
+ this.raise(errorPos, "Illegal 'use strict' directive in function with non-simple parameter list");
1345
+ }
1346
+ }
1347
+
1348
+ const oldLabels = this.state.labels;
1349
+ this.state.labels = [];
1350
+ if (useStrict) this.state.strict = true;
1351
+ this.checkParams(node, !oldStrict && !useStrict && !allowExpression && !isMethod && !nonSimple, allowExpression, !oldStrict && useStrict);
1352
+ node.body = this.parseBlock(true, false);
1353
+ this.state.labels = oldLabels;
1354
+ }
1355
+
1356
+ this.state.inParameters = oldInParameters;
1357
+
1358
+ if (this.state.strict && node.id) {
1359
+ this.checkLVal(node.id, _scopeflags.BIND_OUTSIDE, undefined, "function name", undefined, !oldStrict && useStrict);
1360
+ }
1361
+
1362
+ this.state.strict = oldStrict;
1363
+ }
1364
+
1365
+ isSimpleParamList(params) {
1366
+ for (let i = 0, len = params.length; i < len; i++) {
1367
+ if (params[i].type !== "Identifier") return false;
1368
+ }
1369
+
1370
+ return true;
1371
+ }
1372
+
1373
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
1374
+ const nameHash = Object.create(null);
1375
+
1376
+ for (let i = 0; i < node.params.length; i++) {
1377
+ this.checkLVal(node.params[i], _scopeflags.BIND_VAR, allowDuplicates ? null : nameHash, "function parameter list", undefined, strictModeChanged);
1378
+ }
1379
+ }
1380
+
1381
+ parseExprList(close, allowEmpty, refShorthandDefaultPos, nodeForExtra) {
1382
+ const elts = [];
1383
+ let first = true;
1384
+
1385
+ while (!this.eat(close)) {
1386
+ if (first) {
1387
+ first = false;
1388
+ } else {
1389
+ this.expect(_types.types.comma);
1390
+
1391
+ if (this.match(close)) {
1392
+ if (nodeForExtra) {
1393
+ this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
1394
+ }
1395
+
1396
+ this.next();
1397
+ break;
1398
+ }
1399
+ }
1400
+
1401
+ elts.push(this.parseExprListItem(allowEmpty, refShorthandDefaultPos));
1402
+ }
1403
+
1404
+ return elts;
1405
+ }
1406
+
1407
+ parseExprListItem(allowEmpty, refShorthandDefaultPos, refNeedsArrowPos, allowPlaceholder) {
1408
+ let elt;
1409
+
1410
+ if (allowEmpty && this.match(_types.types.comma)) {
1411
+ elt = null;
1412
+ } else if (this.match(_types.types.ellipsis)) {
1413
+ const spreadNodeStartPos = this.state.start;
1414
+ const spreadNodeStartLoc = this.state.startLoc;
1415
+ elt = this.parseParenItem(this.parseSpread(refShorthandDefaultPos, refNeedsArrowPos), spreadNodeStartPos, spreadNodeStartLoc);
1416
+ } else if (this.match(_types.types.question)) {
1417
+ this.expectPlugin("partialApplication");
1418
+
1419
+ if (!allowPlaceholder) {
1420
+ this.raise(this.state.start, "Unexpected argument placeholder");
1421
+ }
1422
+
1423
+ const node = this.startNode();
1424
+ this.next();
1425
+ elt = this.finishNode(node, "ArgumentPlaceholder");
1426
+ } else {
1427
+ elt = this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem, refNeedsArrowPos);
1428
+ }
1429
+
1430
+ return elt;
1431
+ }
1432
+
1433
+ parseIdentifier(liberal) {
1434
+ const node = this.startNode();
1435
+ const name = this.parseIdentifierName(node.start, liberal);
1436
+ return this.createIdentifier(node, name);
1437
+ }
1438
+
1439
+ createIdentifier(node, name) {
1440
+ node.name = name;
1441
+ node.loc.identifierName = name;
1442
+ return this.finishNode(node, "Identifier");
1443
+ }
1444
+
1445
+ parseIdentifierName(pos, liberal) {
1446
+ let name;
1447
+
1448
+ if (this.match(_types.types.name)) {
1449
+ name = this.state.value;
1450
+ } else if (this.state.type.keyword) {
1451
+ name = this.state.type.keyword;
1452
+
1453
+ if ((name === "class" || name === "function") && (this.state.lastTokEnd !== this.state.lastTokStart + 1 || this.input.charCodeAt(this.state.lastTokStart) !== 46)) {
1454
+ this.state.context.pop();
1455
+ }
1456
+ } else {
1457
+ throw this.unexpected();
1458
+ }
1459
+
1460
+ if (liberal) {
1461
+ this.state.type = _types.types.name;
1462
+ } else {
1463
+ this.checkReservedWord(name, this.state.start, !!this.state.type.keyword, false);
1464
+ }
1465
+
1466
+ this.next();
1467
+ return name;
1468
+ }
1469
+
1470
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
1471
+ if (this.scope.inGenerator && word === "yield") {
1472
+ this.raise(startLoc, "Can not use 'yield' as identifier inside a generator");
1473
+ return;
1474
+ }
1475
+
1476
+ if (word === "await") {
1477
+ if (this.scope.inAsync) {
1478
+ this.raise(startLoc, "Can not use 'await' as identifier inside an async function");
1479
+ return;
1480
+ }
1481
+
1482
+ if (this.state.awaitPos === -1 && (this.state.maybeInArrowParameters || this.isAwaitAllowed())) {
1483
+ this.state.awaitPos = this.state.start;
1484
+ }
1485
+ }
1486
+
1487
+ if (this.scope.inClass && !this.scope.inNonArrowFunction && word === "arguments") {
1488
+ this.raise(startLoc, "'arguments' is not allowed in class field initializer");
1489
+ return;
1490
+ }
1491
+
1492
+ if (checkKeywords && (0, _identifier.isKeyword)(word)) {
1493
+ this.raise(startLoc, `Unexpected keyword '${word}'`);
1494
+ return;
1495
+ }
1496
+
1497
+ const reservedTest = !this.state.strict ? _identifier.isReservedWord : isBinding ? _identifier.isStrictBindReservedWord : _identifier.isStrictReservedWord;
1498
+
1499
+ if (reservedTest(word, this.inModule)) {
1500
+ if (!this.scope.inAsync && word === "await") {
1501
+ this.raise(startLoc, "Can not use keyword 'await' outside an async function");
1502
+ } else {
1503
+ this.raise(startLoc, `Unexpected reserved word '${word}'`);
1504
+ }
1505
+ }
1506
+ }
1507
+
1508
+ isAwaitAllowed() {
1509
+ if (this.scope.inFunction) return this.scope.inAsync;
1510
+ if (this.options.allowAwaitOutsideFunction) return true;
1511
+ if (this.hasPlugin("topLevelAwait")) return this.inModule;
1512
+ return false;
1513
+ }
1514
+
1515
+ parseAwait() {
1516
+ const node = this.startNode();
1517
+ this.next();
1518
+
1519
+ if (this.state.inParameters) {
1520
+ this.raise(node.start, "await is not allowed in async function parameters");
1521
+ } else if (this.state.awaitPos === -1) {
1522
+ this.state.awaitPos = node.start;
1523
+ }
1524
+
1525
+ if (this.eat(_types.types.star)) {
1526
+ this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead.");
1527
+ }
1528
+
1529
+ if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
1530
+ if (this.hasPrecedingLineBreak() || this.match(_types.types.plusMin) || this.match(_types.types.parenL) || this.match(_types.types.bracketL) || this.match(_types.types.backQuote) || this.match(_types.types.regexp) || this.match(_types.types.slash) || this.hasPlugin("v8intrinsic") && this.match(_types.types.modulo)) {
1531
+ this.ambiguousScriptDifferentAst = true;
1532
+ } else {
1533
+ this.sawUnambiguousESM = true;
1534
+ }
1535
+ }
1536
+
1537
+ if (!this.state.soloAwait) {
1538
+ node.argument = this.parseMaybeUnary();
1539
+ }
1540
+
1541
+ return this.finishNode(node, "AwaitExpression");
1542
+ }
1543
+
1544
+ parseYield(noIn) {
1545
+ const node = this.startNode();
1546
+
1547
+ if (this.state.inParameters) {
1548
+ this.raise(node.start, "yield is not allowed in generator parameters");
1549
+ } else if (this.state.yieldPos === -1) {
1550
+ this.state.yieldPos = node.start;
1551
+ }
1552
+
1553
+ this.next();
1554
+
1555
+ if (this.match(_types.types.semi) || !this.match(_types.types.star) && !this.state.type.startsExpr || this.hasPrecedingLineBreak()) {
1556
+ node.delegate = false;
1557
+ node.argument = null;
1558
+ } else {
1559
+ node.delegate = this.eat(_types.types.star);
1560
+ node.argument = this.parseMaybeAssign(noIn);
1561
+ }
1562
+
1563
+ return this.finishNode(node, "YieldExpression");
1564
+ }
1565
+
1566
+ checkPipelineAtInfixOperator(left, leftStartPos) {
1567
+ if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
1568
+ if (left.type === "SequenceExpression") {
1569
+ this.raise(leftStartPos, `Pipeline head should not be a comma-separated sequence expression`);
1570
+ }
1571
+ }
1572
+ }
1573
+
1574
+ parseSmartPipelineBody(childExpression, startPos, startLoc) {
1575
+ const pipelineStyle = this.checkSmartPipelineBodyStyle(childExpression);
1576
+ this.checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos);
1577
+ return this.parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc);
1578
+ }
1579
+
1580
+ checkSmartPipelineBodyEarlyErrors(childExpression, pipelineStyle, startPos) {
1581
+ if (this.match(_types.types.arrow)) {
1582
+ throw this.raise(this.state.start, `Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized`);
1583
+ } else if (pipelineStyle === "PipelineTopicExpression" && childExpression.type === "SequenceExpression") {
1584
+ this.raise(startPos, `Pipeline body may not be a comma-separated sequence expression`);
1585
+ }
1586
+ }
1587
+
1588
+ parseSmartPipelineBodyInStyle(childExpression, pipelineStyle, startPos, startLoc) {
1589
+ const bodyNode = this.startNodeAt(startPos, startLoc);
1590
+
1591
+ switch (pipelineStyle) {
1592
+ case "PipelineBareFunction":
1593
+ bodyNode.callee = childExpression;
1594
+ break;
1595
+
1596
+ case "PipelineBareConstructor":
1597
+ bodyNode.callee = childExpression.callee;
1598
+ break;
1599
+
1600
+ case "PipelineBareAwaitedFunction":
1601
+ bodyNode.callee = childExpression.argument;
1602
+ break;
1603
+
1604
+ case "PipelineTopicExpression":
1605
+ if (!this.topicReferenceWasUsedInCurrentTopicContext()) {
1606
+ this.raise(startPos, `Pipeline is in topic style but does not use topic reference`);
1607
+ }
1608
+
1609
+ bodyNode.expression = childExpression;
1610
+ break;
1611
+
1612
+ default:
1613
+ throw new Error(`Internal @babel/parser error: Unknown pipeline style (${pipelineStyle})`);
1614
+ }
1615
+
1616
+ return this.finishNode(bodyNode, pipelineStyle);
1617
+ }
1618
+
1619
+ checkSmartPipelineBodyStyle(expression) {
1620
+ switch (expression.type) {
1621
+ default:
1622
+ return this.isSimpleReference(expression) ? "PipelineBareFunction" : "PipelineTopicExpression";
1623
+ }
1624
+ }
1625
+
1626
+ isSimpleReference(expression) {
1627
+ switch (expression.type) {
1628
+ case "MemberExpression":
1629
+ return !expression.computed && this.isSimpleReference(expression.object);
1630
+
1631
+ case "Identifier":
1632
+ return true;
1633
+
1634
+ default:
1635
+ return false;
1636
+ }
1637
+ }
1638
+
1639
+ withTopicPermittingContext(callback) {
1640
+ const outerContextTopicState = this.state.topicContext;
1641
+ this.state.topicContext = {
1642
+ maxNumOfResolvableTopics: 1,
1643
+ maxTopicIndex: null
1644
+ };
1645
+
1646
+ try {
1647
+ return callback();
1648
+ } finally {
1649
+ this.state.topicContext = outerContextTopicState;
1650
+ }
1651
+ }
1652
+
1653
+ withTopicForbiddingContext(callback) {
1654
+ const outerContextTopicState = this.state.topicContext;
1655
+ this.state.topicContext = {
1656
+ maxNumOfResolvableTopics: 0,
1657
+ maxTopicIndex: null
1658
+ };
1659
+
1660
+ try {
1661
+ return callback();
1662
+ } finally {
1663
+ this.state.topicContext = outerContextTopicState;
1664
+ }
1665
+ }
1666
+
1667
+ withSoloAwaitPermittingContext(callback) {
1668
+ const outerContextSoloAwaitState = this.state.soloAwait;
1669
+ this.state.soloAwait = true;
1670
+
1671
+ try {
1672
+ return callback();
1673
+ } finally {
1674
+ this.state.soloAwait = outerContextSoloAwaitState;
1675
+ }
1676
+ }
1677
+
1678
+ registerTopicReference() {
1679
+ this.state.topicContext.maxTopicIndex = 0;
1680
+ }
1681
+
1682
+ primaryTopicReferenceIsAllowedInCurrentTopicContext() {
1683
+ return this.state.topicContext.maxNumOfResolvableTopics >= 1;
1684
+ }
1685
+
1686
+ topicReferenceWasUsedInCurrentTopicContext() {
1687
+ return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
1688
+ }
1689
+
1690
+ parseFSharpPipelineBody(prec, noIn) {
1691
+ const startPos = this.state.start;
1692
+ const startLoc = this.state.startLoc;
1693
+ this.state.potentialArrowAt = this.state.start;
1694
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
1695
+ this.state.inFSharpPipelineDirectBody = true;
1696
+ const ret = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, prec, noIn);
1697
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
1698
+ return ret;
1699
+ }
1700
+
1701
+ }
1702
+
1703
+ exports.default = ExpressionParser;