gemi 0.38.0 → 0.40.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/app/App.d.ts +5 -3
  2. package/dist/app/App.d.ts.map +1 -1
  3. package/dist/app/index.js +2 -272
  4. package/dist/app/index.js.map +3 -9
  5. package/dist/auth/oauth/XOAuthProvider.d.ts +1 -1
  6. package/dist/auth/oauth/XOAuthProvider.d.ts.map +1 -1
  7. package/dist/bin/gemi.js +66804 -26887
  8. package/dist/bin/gemi.js.map +110 -20
  9. package/dist/broadcasting/index.js +1 -1
  10. package/dist/bun/plugin.js +4 -0
  11. package/dist/{chunk-hw6nrw6g.js.map → bun/plugin.js.map} +1 -1
  12. package/dist/bun/preload.js +4 -0
  13. package/dist/bun/preload.js.map +10 -0
  14. package/dist/{chunk-vgz78xam.js → chunk-0xabjqdt.js} +2 -2
  15. package/dist/{chunk-vgz78xam.js.map → chunk-0xabjqdt.js.map} +1 -1
  16. package/dist/chunk-1wv2m67p.js +4 -0
  17. package/dist/{chunk-kfekwtbp.js.map → chunk-1wv2m67p.js.map} +1 -1
  18. package/dist/{chunk-twncacnk.js → chunk-34bhbqbh.js} +2 -2
  19. package/dist/{chunk-twncacnk.js.map → chunk-34bhbqbh.js.map} +1 -1
  20. package/dist/{chunk-sm6zbv38.js → chunk-37qn44wf.js} +3 -3
  21. package/dist/{chunk-sm6zbv38.js.map → chunk-37qn44wf.js.map} +1 -1
  22. package/dist/{chunk-7fx4zpqd.js → chunk-46g7xzc3.js} +3 -3
  23. package/dist/{chunk-7fx4zpqd.js.map → chunk-46g7xzc3.js.map} +1 -1
  24. package/dist/{chunk-nacrt2vw.js → chunk-55jrzaj0.js} +2 -2
  25. package/dist/{chunk-nacrt2vw.js.map → chunk-55jrzaj0.js.map} +1 -1
  26. package/dist/{chunk-a44rr4a0.js → chunk-5jar30t5.js} +2 -2
  27. package/dist/{chunk-a44rr4a0.js.map → chunk-5jar30t5.js.map} +1 -1
  28. package/dist/{chunk-kt67sv2v.js → chunk-6nm2pt02.js} +2 -2
  29. package/dist/{chunk-kt67sv2v.js.map → chunk-6nm2pt02.js.map} +1 -1
  30. package/dist/{chunk-871hrt5k.js → chunk-71e1rmh4.js} +21 -21
  31. package/dist/{chunk-871hrt5k.js.map → chunk-71e1rmh4.js.map} +6 -5
  32. package/dist/{chunk-frdxhs0s.js → chunk-7219pj06.js} +3 -3
  33. package/dist/{chunk-frdxhs0s.js.map → chunk-7219pj06.js.map} +1 -1
  34. package/dist/chunk-8z5r7z7w.js +5 -0
  35. package/dist/chunk-8z5r7z7w.js.map +10 -0
  36. package/dist/{chunk-g9htz9wp.js → chunk-8zrzjvj8.js} +4 -4
  37. package/dist/{chunk-g9htz9wp.js.map → chunk-8zrzjvj8.js.map} +1 -1
  38. package/dist/{chunk-9p8h8aej.js → chunk-9x52jhc8.js} +2 -2
  39. package/dist/{chunk-9p8h8aej.js.map → chunk-9x52jhc8.js.map} +1 -1
  40. package/dist/{chunk-gm3gevhz.js → chunk-ar3kj71m.js} +2 -2
  41. package/dist/{chunk-gm3gevhz.js.map → chunk-ar3kj71m.js.map} +1 -1
  42. package/dist/{chunk-rda8ja4x.js → chunk-b2f631nw.js} +2 -2
  43. package/dist/{chunk-rda8ja4x.js.map → chunk-b2f631nw.js.map} +1 -1
  44. package/dist/{chunk-zf8mc5nr.js → chunk-cy0yet3t.js} +2 -2
  45. package/dist/{chunk-zf8mc5nr.js.map → chunk-cy0yet3t.js.map} +1 -1
  46. package/dist/{chunk-e4v7ay0q.js → chunk-e40j5tgj.js} +3 -3
  47. package/dist/{chunk-e4v7ay0q.js.map → chunk-e40j5tgj.js.map} +1 -1
  48. package/dist/{chunk-pwhb292c.js → chunk-e43m0sz9.js} +29 -29
  49. package/dist/{chunk-pwhb292c.js.map → chunk-e43m0sz9.js.map} +7 -5
  50. package/dist/{chunk-ektbs6gq.js → chunk-e7wdb957.js} +3 -3
  51. package/dist/{chunk-ektbs6gq.js.map → chunk-e7wdb957.js.map} +1 -1
  52. package/dist/chunk-ffj2g6wn.js +101 -0
  53. package/dist/chunk-ffj2g6wn.js.map +48 -0
  54. package/dist/{chunk-kv145fsh.js → chunk-fs8zhe24.js} +2 -2
  55. package/dist/{chunk-kv145fsh.js.map → chunk-fs8zhe24.js.map} +1 -1
  56. package/dist/{chunk-fa8tk1f8.js → chunk-gky8x4rv.js} +2 -2
  57. package/dist/{chunk-fa8tk1f8.js.map → chunk-gky8x4rv.js.map} +1 -1
  58. package/dist/{chunk-3464zptf.js → chunk-he4nzstf.js} +2 -2
  59. package/dist/{chunk-3464zptf.js.map → chunk-he4nzstf.js.map} +1 -1
  60. package/dist/chunk-hq4yhfaq.js +274 -0
  61. package/dist/chunk-hq4yhfaq.js.map +15 -0
  62. package/dist/{chunk-kfekwtbp.js → chunk-j6eh0etj.js} +2 -2
  63. package/dist/chunk-j6eh0etj.js.map +9 -0
  64. package/dist/{chunk-qmpybvq3.js → chunk-jhp3h3kc.js} +3 -3
  65. package/dist/{chunk-qmpybvq3.js.map → chunk-jhp3h3kc.js.map} +1 -1
  66. package/dist/{chunk-wspcma7s.js → chunk-jnbtsgrp.js} +3 -3
  67. package/dist/{chunk-wspcma7s.js.map → chunk-jnbtsgrp.js.map} +1 -1
  68. package/dist/chunk-k4kdssr3.js +5 -0
  69. package/dist/{chunk-34ac0e8a.js.map → chunk-k4kdssr3.js.map} +1 -1
  70. package/dist/{chunk-gyhg162v.js → chunk-kk353x3p.js} +1 -1
  71. package/dist/{chunk-y9m0jemc.js → chunk-m1vjp86n.js} +3 -3
  72. package/dist/{chunk-y9m0jemc.js.map → chunk-m1vjp86n.js.map} +1 -1
  73. package/dist/{chunk-md7n9kmr.js → chunk-m5nxws92.js} +3 -3
  74. package/dist/{chunk-md7n9kmr.js.map → chunk-m5nxws92.js.map} +1 -1
  75. package/dist/{chunk-3s6dm0ff.js → chunk-pca557td.js} +2 -2
  76. package/dist/{chunk-3s6dm0ff.js.map → chunk-pca557td.js.map} +1 -1
  77. package/dist/chunk-py00anah.js +6 -0
  78. package/dist/chunk-py00anah.js.map +14 -0
  79. package/dist/{chunk-sbt387js.js → chunk-qksh8x1f.js} +2 -2
  80. package/dist/{chunk-sbt387js.js.map → chunk-qksh8x1f.js.map} +1 -1
  81. package/dist/{chunk-j06ebr2s.js → chunk-tgrnmmg5.js} +2 -2
  82. package/dist/{chunk-j06ebr2s.js.map → chunk-tgrnmmg5.js.map} +1 -1
  83. package/dist/{chunk-b8t8hrgm.js → chunk-wss9zewk.js} +4 -4
  84. package/dist/{chunk-b8t8hrgm.js.map → chunk-wss9zewk.js.map} +1 -1
  85. package/dist/{chunk-9krpj7nc.js → chunk-ww5pp0rp.js} +3 -3
  86. package/dist/{chunk-9krpj7nc.js.map → chunk-ww5pp0rp.js.map} +1 -1
  87. package/dist/{chunk-3hb1j6ty.js → chunk-wypjxj9v.js} +3 -3
  88. package/dist/{chunk-3hb1j6ty.js.map → chunk-wypjxj9v.js.map} +1 -1
  89. package/dist/{chunk-ks022k0g.js → chunk-xdsym1c8.js} +2 -2
  90. package/dist/{chunk-ks022k0g.js.map → chunk-xdsym1c8.js.map} +1 -1
  91. package/dist/{chunk-703zn6wy.js → chunk-xfeqd7as.js} +2 -2
  92. package/dist/{chunk-703zn6wy.js.map → chunk-xfeqd7as.js.map} +1 -1
  93. package/dist/{chunk-rtmsz7yd.js → chunk-xxdb06dz.js} +3 -3
  94. package/dist/{chunk-rtmsz7yd.js.map → chunk-xxdb06dz.js.map} +1 -1
  95. package/dist/{chunk-8by5dnz7.js → chunk-yhphtr31.js} +3 -3
  96. package/dist/{chunk-8by5dnz7.js.map → chunk-yhphtr31.js.map} +1 -1
  97. package/dist/{chunk-05yzymd6.js → chunk-z3tgcb5r.js} +2 -2
  98. package/dist/{chunk-05yzymd6.js.map → chunk-z3tgcb5r.js.map} +1 -1
  99. package/dist/chunk-zjxbe8tx.js +5 -0
  100. package/dist/chunk-zjxbe8tx.js.map +10 -0
  101. package/dist/client/Head.d.ts.map +1 -1
  102. package/dist/client/HttpReload.d.ts.map +1 -1
  103. package/dist/client/index.js +26975 -35189
  104. package/dist/client/index.js.map +1 -1
  105. package/dist/client/init.d.ts +2 -2
  106. package/dist/client/init.d.ts.map +1 -1
  107. package/dist/config/index.js +4 -0
  108. package/dist/config/index.js.map +10 -0
  109. package/dist/email/index.js +2 -2
  110. package/dist/email/index.js.map +2 -2
  111. package/dist/facades/Redis.d.ts +12 -0
  112. package/dist/facades/Redis.d.ts.map +1 -0
  113. package/dist/facades/index.d.ts +1 -0
  114. package/dist/facades/index.d.ts.map +1 -1
  115. package/dist/facades/index.js +2 -2
  116. package/dist/facades/index.js.map +1 -1
  117. package/dist/http/index.js +2 -2
  118. package/dist/http/index.js.map +1 -1
  119. package/dist/i18n/index.js +2 -2
  120. package/dist/i18n/index.js.map +1 -1
  121. package/dist/internal/gemiExternals.d.ts +3 -0
  122. package/dist/internal/gemiExternals.d.ts.map +1 -0
  123. package/dist/kernel/Kernel.d.ts +2 -0
  124. package/dist/kernel/Kernel.d.ts.map +1 -1
  125. package/dist/kernel/index.js +2 -2
  126. package/dist/kernel/index.js.map +5 -6
  127. package/dist/server/Server.d.ts +12 -0
  128. package/dist/server/Server.d.ts.map +1 -0
  129. package/dist/server/banner.d.ts +5 -0
  130. package/dist/server/banner.d.ts.map +1 -0
  131. package/dist/server/generateEtag.d.ts +2 -0
  132. package/dist/server/generateEtag.d.ts.map +1 -0
  133. package/dist/server/httpDev.d.ts +26 -0
  134. package/dist/server/httpDev.d.ts.map +1 -0
  135. package/dist/server/httpProd.d.ts +4 -0
  136. package/dist/server/httpProd.d.ts.map +1 -0
  137. package/dist/server/index.d.ts +2 -0
  138. package/dist/server/index.d.ts.map +1 -0
  139. package/dist/server/index.js +2 -51
  140. package/dist/server/index.js.map +4 -9
  141. package/dist/server/renderErrorPage.d.ts +2 -0
  142. package/dist/server/renderErrorPage.d.ts.map +1 -0
  143. package/dist/server/styles.d.ts +18 -0
  144. package/dist/server/styles.d.ts.map +1 -0
  145. package/dist/server/types.d.ts +2 -0
  146. package/dist/server/types.d.ts.map +1 -0
  147. package/dist/server/watchEnv.d.ts +7 -0
  148. package/dist/server/watchEnv.d.ts.map +1 -0
  149. package/dist/services/cron/CronJob.d.ts +1 -1
  150. package/dist/services/cron/CronJob.d.ts.map +1 -1
  151. package/dist/services/cron/CronServiceContainer.d.ts +5 -0
  152. package/dist/services/cron/CronServiceContainer.d.ts.map +1 -1
  153. package/dist/services/index.d.ts +1 -0
  154. package/dist/services/index.d.ts.map +1 -1
  155. package/dist/services/index.js +2 -2
  156. package/dist/services/index.js.map +1 -1
  157. package/dist/services/redis/RedisServiceContainer.d.ts +10 -0
  158. package/dist/services/redis/RedisServiceContainer.d.ts.map +1 -0
  159. package/dist/services/redis/RedisServiceProvider.d.ts +8 -0
  160. package/dist/services/redis/RedisServiceProvider.d.ts.map +1 -0
  161. package/dist/services/router/ViewRouterServiceContainer.d.ts.map +1 -1
  162. package/dist/vite/index.mjs +62 -3
  163. package/package.json +16 -10
  164. package/dist/chunk-34ac0e8a.js +0 -5
  165. package/dist/chunk-hw6nrw6g.js +0 -4
  166. package/dist/chunk-jk9aba71.js +0 -61
  167. package/dist/chunk-jk9aba71.js.map +0 -55
  168. package/dist/vite/index-3fSp4NVF.mjs +0 -20135
  169. package/dist/vite/typescript-1ZdUKbbC.mjs +0 -14693
  170. /package/dist/{chunk-gyhg162v.js.map → chunk-kk353x3p.js.map} +0 -0
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/.bun/esprima@4.0.1/node_modules/esprima/dist/esprima.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/parsers/esprima.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/options.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/mapping.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/lines.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/comments.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/parser.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/fast-path.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/patcher.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/lib/printer.js", "../../../node_modules/.bun/recast@0.23.11/node_modules/recast/main.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/types.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/path.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/scope.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/node-path.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/path-visitor.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/equiv.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/fork.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/core-operators.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/lib/shared.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/core.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es6.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es2016.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es2017.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es2018.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es2019.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es2020.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/jsx.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/es-proposals.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/type-annotations.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/flow.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/esprima.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/babel-core.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/babel.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/def/typescript.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/gen/namedTypes.js", "../../../node_modules/.bun/ast-types@0.14.2/node_modules/ast-types/main.js", "../bun/customRequestParser.ts", "../bun/plugin.ts"],
4
+ "sourcesContent": [
5
+ "(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t Redistribution and use in source and binary forms, with or without\n\t modification, are permitted provided that the following conditions are met:\n\n\t * Redistributions of source code must retain the above copyright\n\t notice, this list of conditions and the following disclaimer.\n\t * Redistributions in binary form must reproduce the above copyright\n\t notice, this list of conditions and the following disclaimer in the\n\t documentation and/or other materials provided with the distribution.\n\n\t THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t var commentHandler = null;\n\t var proxyDelegate = function (node, metadata) {\n\t if (delegate) {\n\t delegate(node, metadata);\n\t }\n\t if (commentHandler) {\n\t commentHandler.visit(node, metadata);\n\t }\n\t };\n\t var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t var collectComment = false;\n\t if (options) {\n\t collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t if (collectComment || attachComment) {\n\t commentHandler = new comment_handler_1.CommentHandler();\n\t commentHandler.attach = attachComment;\n\t options.comment = true;\n\t parserDelegate = proxyDelegate;\n\t }\n\t }\n\t var isModule = false;\n\t if (options && typeof options.sourceType === 'string') {\n\t isModule = (options.sourceType === 'module');\n\t }\n\t var parser;\n\t if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t }\n\t else {\n\t parser = new parser_1.Parser(code, options, parserDelegate);\n\t }\n\t var program = isModule ? parser.parseModule() : parser.parseScript();\n\t var ast = program;\n\t if (collectComment && commentHandler) {\n\t ast.comments = commentHandler.comments;\n\t }\n\t if (parser.config.tokens) {\n\t ast.tokens = parser.tokens;\n\t }\n\t if (parser.config.tolerant) {\n\t ast.errors = parser.errorHandler.errors;\n\t }\n\t return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'module';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t var parsingOptions = options || {};\n\t parsingOptions.sourceType = 'script';\n\t return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t var tokens;\n\t tokens = [];\n\t try {\n\t while (true) {\n\t var token = tokenizer.getNextToken();\n\t if (!token) {\n\t break;\n\t }\n\t if (delegate) {\n\t token = delegate(token);\n\t }\n\t tokens.push(token);\n\t }\n\t }\n\t catch (e) {\n\t tokenizer.errorHandler.tolerate(e);\n\t }\n\t if (tokenizer.errorHandler.tolerant) {\n\t tokens.errors = tokenizer.errors();\n\t }\n\t return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t function CommentHandler() {\n\t this.attach = false;\n\t this.comments = [];\n\t this.stack = [];\n\t this.leading = [];\n\t this.trailing = [];\n\t }\n\t CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t // innnerComments for properties empty block\n\t // `function a() {/** comments **\\/}`\n\t if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t var innerComments = [];\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (metadata.end.offset >= entry.start) {\n\t innerComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t this.trailing.splice(i, 1);\n\t }\n\t }\n\t if (innerComments.length) {\n\t node.innerComments = innerComments;\n\t }\n\t }\n\t };\n\t CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t var trailingComments = [];\n\t if (this.trailing.length > 0) {\n\t for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t var entry_1 = this.trailing[i];\n\t if (entry_1.start >= metadata.end.offset) {\n\t trailingComments.unshift(entry_1.comment);\n\t }\n\t }\n\t this.trailing.length = 0;\n\t return trailingComments;\n\t }\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.node.trailingComments) {\n\t var firstComment = entry.node.trailingComments[0];\n\t if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t trailingComments = entry.node.trailingComments;\n\t delete entry.node.trailingComments;\n\t }\n\t }\n\t return trailingComments;\n\t };\n\t CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t var leadingComments = [];\n\t var target;\n\t while (this.stack.length > 0) {\n\t var entry = this.stack[this.stack.length - 1];\n\t if (entry && entry.start >= metadata.start.offset) {\n\t target = entry.node;\n\t this.stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t if (target) {\n\t var count = target.leadingComments ? target.leadingComments.length : 0;\n\t for (var i = count - 1; i >= 0; --i) {\n\t var comment = target.leadingComments[i];\n\t if (comment.range[1] <= metadata.start.offset) {\n\t leadingComments.unshift(comment);\n\t target.leadingComments.splice(i, 1);\n\t }\n\t }\n\t if (target.leadingComments && target.leadingComments.length === 0) {\n\t delete target.leadingComments;\n\t }\n\t return leadingComments;\n\t }\n\t for (var i = this.leading.length - 1; i >= 0; --i) {\n\t var entry = this.leading[i];\n\t if (entry.start <= metadata.start.offset) {\n\t leadingComments.unshift(entry.comment);\n\t this.leading.splice(i, 1);\n\t }\n\t }\n\t return leadingComments;\n\t };\n\t CommentHandler.prototype.visitNode = function (node, metadata) {\n\t if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t return;\n\t }\n\t this.insertInnerComments(node, metadata);\n\t var trailingComments = this.findTrailingComments(metadata);\n\t var leadingComments = this.findLeadingComments(metadata);\n\t if (leadingComments.length > 0) {\n\t node.leadingComments = leadingComments;\n\t }\n\t if (trailingComments.length > 0) {\n\t node.trailingComments = trailingComments;\n\t }\n\t this.stack.push({\n\t node: node,\n\t start: metadata.start.offset\n\t });\n\t };\n\t CommentHandler.prototype.visitComment = function (node, metadata) {\n\t var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t var comment = {\n\t type: type,\n\t value: node.value\n\t };\n\t if (node.range) {\n\t comment.range = node.range;\n\t }\n\t if (node.loc) {\n\t comment.loc = node.loc;\n\t }\n\t this.comments.push(comment);\n\t if (this.attach) {\n\t var entry = {\n\t comment: {\n\t type: type,\n\t value: node.value,\n\t range: [metadata.start.offset, metadata.end.offset]\n\t },\n\t start: metadata.start.offset\n\t };\n\t if (node.loc) {\n\t entry.comment.loc = node.loc;\n\t }\n\t node.type = type;\n\t this.leading.push(entry);\n\t this.trailing.push(entry);\n\t }\n\t };\n\t CommentHandler.prototype.visit = function (node, metadata) {\n\t if (node.type === 'LineComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (node.type === 'BlockComment') {\n\t this.visitComment(node, metadata);\n\t }\n\t else if (this.attach) {\n\t this.visitNode(node, metadata);\n\t }\n\t };\n\t return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t AssignmentExpression: 'AssignmentExpression',\n\t AssignmentPattern: 'AssignmentPattern',\n\t ArrayExpression: 'ArrayExpression',\n\t ArrayPattern: 'ArrayPattern',\n\t ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t AwaitExpression: 'AwaitExpression',\n\t BlockStatement: 'BlockStatement',\n\t BinaryExpression: 'BinaryExpression',\n\t BreakStatement: 'BreakStatement',\n\t CallExpression: 'CallExpression',\n\t CatchClause: 'CatchClause',\n\t ClassBody: 'ClassBody',\n\t ClassDeclaration: 'ClassDeclaration',\n\t ClassExpression: 'ClassExpression',\n\t ConditionalExpression: 'ConditionalExpression',\n\t ContinueStatement: 'ContinueStatement',\n\t DoWhileStatement: 'DoWhileStatement',\n\t DebuggerStatement: 'DebuggerStatement',\n\t EmptyStatement: 'EmptyStatement',\n\t ExportAllDeclaration: 'ExportAllDeclaration',\n\t ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t ExportSpecifier: 'ExportSpecifier',\n\t ExpressionStatement: 'ExpressionStatement',\n\t ForStatement: 'ForStatement',\n\t ForOfStatement: 'ForOfStatement',\n\t ForInStatement: 'ForInStatement',\n\t FunctionDeclaration: 'FunctionDeclaration',\n\t FunctionExpression: 'FunctionExpression',\n\t Identifier: 'Identifier',\n\t IfStatement: 'IfStatement',\n\t ImportDeclaration: 'ImportDeclaration',\n\t ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t ImportSpecifier: 'ImportSpecifier',\n\t Literal: 'Literal',\n\t LabeledStatement: 'LabeledStatement',\n\t LogicalExpression: 'LogicalExpression',\n\t MemberExpression: 'MemberExpression',\n\t MetaProperty: 'MetaProperty',\n\t MethodDefinition: 'MethodDefinition',\n\t NewExpression: 'NewExpression',\n\t ObjectExpression: 'ObjectExpression',\n\t ObjectPattern: 'ObjectPattern',\n\t Program: 'Program',\n\t Property: 'Property',\n\t RestElement: 'RestElement',\n\t ReturnStatement: 'ReturnStatement',\n\t SequenceExpression: 'SequenceExpression',\n\t SpreadElement: 'SpreadElement',\n\t Super: 'Super',\n\t SwitchCase: 'SwitchCase',\n\t SwitchStatement: 'SwitchStatement',\n\t TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t TemplateElement: 'TemplateElement',\n\t TemplateLiteral: 'TemplateLiteral',\n\t ThisExpression: 'ThisExpression',\n\t ThrowStatement: 'ThrowStatement',\n\t TryStatement: 'TryStatement',\n\t UnaryExpression: 'UnaryExpression',\n\t UpdateExpression: 'UpdateExpression',\n\t VariableDeclaration: 'VariableDeclaration',\n\t VariableDeclarator: 'VariableDeclarator',\n\t WhileStatement: 'WhileStatement',\n\t WithStatement: 'WithStatement',\n\t YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t var extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t return function (d, b) {\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t var qualifiedName;\n\t switch (elementName.type) {\n\t case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t var id = elementName;\n\t qualifiedName = id.name;\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t var ns = elementName;\n\t qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t getQualifiedElementName(ns.name);\n\t break;\n\t case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t var expr = elementName;\n\t qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t getQualifiedElementName(expr.property);\n\t break;\n\t /* istanbul ignore next */\n\t default:\n\t break;\n\t }\n\t return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t __extends(JSXParser, _super);\n\t function JSXParser(code, options, delegate) {\n\t return _super.call(this, code, options, delegate) || this;\n\t }\n\t JSXParser.prototype.parsePrimaryExpression = function () {\n\t return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t };\n\t JSXParser.prototype.startJSX = function () {\n\t // Unwind the scanner before the lookahead token.\n\t this.scanner.index = this.startMarker.index;\n\t this.scanner.lineNumber = this.startMarker.line;\n\t this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t };\n\t JSXParser.prototype.finishJSX = function () {\n\t // Prime the next lookahead.\n\t this.nextToken();\n\t };\n\t JSXParser.prototype.reenterJSX = function () {\n\t this.startJSX();\n\t this.expectJSX('}');\n\t // Pop the closing '}' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t };\n\t JSXParser.prototype.createJSXNode = function () {\n\t this.collectComments();\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.createJSXChildNode = function () {\n\t return {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t };\n\t JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t var result = '&';\n\t var valid = true;\n\t var terminated = false;\n\t var numeric = false;\n\t var hex = false;\n\t while (!this.scanner.eof() && valid && !terminated) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === quote) {\n\t break;\n\t }\n\t terminated = (ch === ';');\n\t result += ch;\n\t ++this.scanner.index;\n\t if (!terminated) {\n\t switch (result.length) {\n\t case 2:\n\t // e.g. '&#123;'\n\t numeric = (ch === '#');\n\t break;\n\t case 3:\n\t if (numeric) {\n\t // e.g. '&#x41;'\n\t hex = (ch === 'x');\n\t valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t numeric = numeric && !hex;\n\t }\n\t break;\n\t default:\n\t valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t break;\n\t }\n\t }\n\t }\n\t if (valid && terminated && result.length > 2) {\n\t // e.g. '&#x41;' becomes just '#x41'\n\t var str = result.substr(1, result.length - 2);\n\t if (numeric && str.length > 1) {\n\t result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t }\n\t else if (hex && str.length > 2) {\n\t result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t }\n\t else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t result = xhtml_entities_1.XHTMLEntities[str];\n\t }\n\t }\n\t return result;\n\t };\n\t // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t JSXParser.prototype.lexJSX = function () {\n\t var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t // < > / : = { }\n\t if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t var value = this.scanner.source[this.scanner.index++];\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index - 1,\n\t end: this.scanner.index\n\t };\n\t }\n\t // \" '\n\t if (cp === 34 || cp === 39) {\n\t var start = this.scanner.index;\n\t var quote = this.scanner.source[this.scanner.index++];\n\t var str = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index++];\n\t if (ch === quote) {\n\t break;\n\t }\n\t else if (ch === '&') {\n\t str += this.scanXHTMLEntity(quote);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // ... or .\n\t if (cp === 46) {\n\t var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t var start = this.scanner.index;\n\t this.scanner.index += value.length;\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: value,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t // `\n\t if (cp === 96) {\n\t // Only placeholder, since it will be rescanned as a real assignment expression.\n\t return {\n\t type: 10 /* Template */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: this.scanner.index,\n\t end: this.scanner.index\n\t };\n\t }\n\t // Identifer can not contain backslash (char code 92).\n\t if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t var start = this.scanner.index;\n\t ++this.scanner.index;\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t ++this.scanner.index;\n\t }\n\t else if (ch === 45) {\n\t // Hyphen (char code 45) can be part of an identifier.\n\t ++this.scanner.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t var id = this.scanner.source.slice(start, this.scanner.index);\n\t return {\n\t type: 100 /* Identifier */,\n\t value: id,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t }\n\t return this.scanner.lex();\n\t };\n\t JSXParser.prototype.nextJSXToken = function () {\n\t this.collectComments();\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = this.lexJSX();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t if (this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.nextJSXText = function () {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var start = this.scanner.index;\n\t var text = '';\n\t while (!this.scanner.eof()) {\n\t var ch = this.scanner.source[this.scanner.index];\n\t if (ch === '{' || ch === '<') {\n\t break;\n\t }\n\t ++this.scanner.index;\n\t text += ch;\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.scanner.lineNumber;\n\t if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t ++this.scanner.index;\n\t }\n\t this.scanner.lineStart = this.scanner.index;\n\t }\n\t }\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t var token = {\n\t type: 101 /* Text */,\n\t value: text,\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: this.scanner.lineStart,\n\t start: start,\n\t end: this.scanner.index\n\t };\n\t if ((text.length > 0) && this.config.tokens) {\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t return token;\n\t };\n\t JSXParser.prototype.peekJSXToken = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.lexJSX();\n\t this.scanner.restoreState(state);\n\t return next;\n\t };\n\t // Expect the next JSX token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t JSXParser.prototype.expectJSX = function (value) {\n\t var token = this.nextJSXToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next JSX token matches the specified punctuator.\n\t JSXParser.prototype.matchJSX = function (value) {\n\t var next = this.peekJSXToken();\n\t return next.type === 7 /* Punctuator */ && next.value === value;\n\t };\n\t JSXParser.prototype.parseJSXIdentifier = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 100 /* Identifier */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t };\n\t JSXParser.prototype.parseJSXElementName = function () {\n\t var node = this.createJSXNode();\n\t var elementName = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = elementName;\n\t this.expectJSX(':');\n\t var name_1 = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t }\n\t else if (this.matchJSX('.')) {\n\t while (this.matchJSX('.')) {\n\t var object = elementName;\n\t this.expectJSX('.');\n\t var property = this.parseJSXIdentifier();\n\t elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t }\n\t }\n\t return elementName;\n\t };\n\t JSXParser.prototype.parseJSXAttributeName = function () {\n\t var node = this.createJSXNode();\n\t var attributeName;\n\t var identifier = this.parseJSXIdentifier();\n\t if (this.matchJSX(':')) {\n\t var namespace = identifier;\n\t this.expectJSX(':');\n\t var name_2 = this.parseJSXIdentifier();\n\t attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t }\n\t else {\n\t attributeName = identifier;\n\t }\n\t return attributeName;\n\t };\n\t JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t var node = this.createJSXNode();\n\t var token = this.nextJSXToken();\n\t if (token.type !== 8 /* StringLiteral */) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.finishJSX();\n\t if (this.match('}')) {\n\t this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t }\n\t var expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXAttributeValue = function () {\n\t return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t };\n\t JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t var node = this.createJSXNode();\n\t var name = this.parseJSXAttributeName();\n\t var value = null;\n\t if (this.matchJSX('=')) {\n\t this.expectJSX('=');\n\t value = this.parseJSXAttributeValue();\n\t }\n\t return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t };\n\t JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t this.expectJSX('...');\n\t this.finishJSX();\n\t var argument = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t };\n\t JSXParser.prototype.parseJSXAttributes = function () {\n\t var attributes = [];\n\t while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t this.parseJSXNameValueAttribute();\n\t attributes.push(attribute);\n\t }\n\t return attributes;\n\t };\n\t JSXParser.prototype.parseJSXOpeningElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('<');\n\t if (this.matchJSX('/')) {\n\t this.expectJSX('/');\n\t var name_3 = this.parseJSXElementName();\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t }\n\t var name = this.parseJSXElementName();\n\t var attributes = this.parseJSXAttributes();\n\t var selfClosing = this.matchJSX('/');\n\t if (selfClosing) {\n\t this.expectJSX('/');\n\t }\n\t this.expectJSX('>');\n\t return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t };\n\t JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t var node = this.createJSXChildNode();\n\t this.collectComments();\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t };\n\t JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t var node = this.createJSXNode();\n\t this.expectJSX('{');\n\t var expression;\n\t if (this.matchJSX('}')) {\n\t expression = this.parseJSXEmptyExpression();\n\t this.expectJSX('}');\n\t }\n\t else {\n\t this.finishJSX();\n\t expression = this.parseAssignmentExpression();\n\t this.reenterJSX();\n\t }\n\t return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t };\n\t JSXParser.prototype.parseJSXChildren = function () {\n\t var children = [];\n\t while (!this.scanner.eof()) {\n\t var node = this.createJSXChildNode();\n\t var token = this.nextJSXText();\n\t if (token.start < token.end) {\n\t var raw = this.getTokenRaw(token);\n\t var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t children.push(child);\n\t }\n\t if (this.scanner.source[this.scanner.index] === '{') {\n\t var container = this.parseJSXExpressionContainer();\n\t children.push(container);\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return children;\n\t };\n\t JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t var stack = [];\n\t while (!this.scanner.eof()) {\n\t el.children = el.children.concat(this.parseJSXChildren());\n\t var node = this.createJSXChildNode();\n\t var element = this.parseJSXBoundaryElement();\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t var opening = element;\n\t if (opening.selfClosing) {\n\t var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t el.children.push(child);\n\t }\n\t else {\n\t stack.push(el);\n\t el = { node: node, opening: opening, closing: null, children: [] };\n\t }\n\t }\n\t if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t el.closing = element;\n\t var open_1 = getQualifiedElementName(el.opening.name);\n\t var close_1 = getQualifiedElementName(el.closing.name);\n\t if (open_1 !== close_1) {\n\t this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t }\n\t if (stack.length > 0) {\n\t var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t el = stack[stack.length - 1];\n\t el.children.push(child);\n\t stack.pop();\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t }\n\t return el;\n\t };\n\t JSXParser.prototype.parseJSXElement = function () {\n\t var node = this.createJSXNode();\n\t var opening = this.parseJSXOpeningElement();\n\t var children = [];\n\t var closing = null;\n\t if (!opening.selfClosing) {\n\t var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t children = el.children;\n\t closing = el.closing;\n\t }\n\t return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t };\n\t JSXParser.prototype.parseJSXRoot = function () {\n\t // Pop the opening '<' added from the lookahead.\n\t if (this.config.tokens) {\n\t this.tokens.pop();\n\t }\n\t this.startJSX();\n\t var element = this.parseJSXElement();\n\t this.finishJSX();\n\t return element;\n\t };\n\t JSXParser.prototype.isStartOfExpression = function () {\n\t return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t };\n\t return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t NonAsciiIdentifierStart: /[\\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\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\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\\u08A0-\\u08B4\\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\\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\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\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-\\u1877\\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\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\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-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\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]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\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\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\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\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\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-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t /* tslint:disable:no-bitwise */\n\t fromCodePoint: function (cp) {\n\t return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-white-space\n\t isWhiteSpace: function (cp) {\n\t return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-line-terminators\n\t isLineTerminator: function (cp) {\n\t return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t },\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t isIdentifierStart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t isIdentifierPart: function (cp) {\n\t return (cp === 0x24) || (cp === 0x5F) ||\n\t (cp >= 0x41 && cp <= 0x5A) ||\n\t (cp >= 0x61 && cp <= 0x7A) ||\n\t (cp >= 0x30 && cp <= 0x39) ||\n\t (cp === 0x5C) ||\n\t ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t },\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t isDecimalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t },\n\t isHexDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x39) ||\n\t (cp >= 0x41 && cp <= 0x46) ||\n\t (cp >= 0x61 && cp <= 0x66); // a..f\n\t },\n\t isOctalDigit: function (cp) {\n\t return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t function JSXClosingElement(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t this.name = name;\n\t }\n\t return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t function JSXElement(openingElement, children, closingElement) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t this.openingElement = openingElement;\n\t this.children = children;\n\t this.closingElement = closingElement;\n\t }\n\t return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t function JSXEmptyExpression() {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t }\n\t return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t function JSXExpressionContainer(expression) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t this.expression = expression;\n\t }\n\t return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t function JSXIdentifier(name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t this.name = name;\n\t }\n\t return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t function JSXMemberExpression(object, property) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t function JSXAttribute(name, value) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t this.name = name;\n\t this.value = value;\n\t }\n\t return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t function JSXNamespacedName(namespace, name) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t this.namespace = namespace;\n\t this.name = name;\n\t }\n\t return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t function JSXOpeningElement(name, selfClosing, attributes) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t this.name = name;\n\t this.selfClosing = selfClosing;\n\t this.attributes = attributes;\n\t }\n\t return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t function JSXSpreadAttribute(argument) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t this.argument = argument;\n\t }\n\t return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t function JSXText(value, raw) {\n\t this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t JSXAttribute: 'JSXAttribute',\n\t JSXClosingElement: 'JSXClosingElement',\n\t JSXElement: 'JSXElement',\n\t JSXEmptyExpression: 'JSXEmptyExpression',\n\t JSXExpressionContainer: 'JSXExpressionContainer',\n\t JSXIdentifier: 'JSXIdentifier',\n\t JSXMemberExpression: 'JSXMemberExpression',\n\t JSXNamespacedName: 'JSXNamespacedName',\n\t JSXOpeningElement: 'JSXOpeningElement',\n\t JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t function ArrayExpression(elements) {\n\t this.type = syntax_1.Syntax.ArrayExpression;\n\t this.elements = elements;\n\t }\n\t return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t function ArrayPattern(elements) {\n\t this.type = syntax_1.Syntax.ArrayPattern;\n\t this.elements = elements;\n\t }\n\t return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t function ArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = false;\n\t }\n\t return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t function AssignmentExpression(operator, left, right) {\n\t this.type = syntax_1.Syntax.AssignmentExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t function AssignmentPattern(left, right) {\n\t this.type = syntax_1.Syntax.AssignmentPattern;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t function AsyncArrowFunctionExpression(params, body, expression) {\n\t this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t this.id = null;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = expression;\n\t this.async = true;\n\t }\n\t return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t function AsyncFunctionDeclaration(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t function AsyncFunctionExpression(id, params, body) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = false;\n\t this.expression = false;\n\t this.async = true;\n\t }\n\t return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t function AwaitExpression(argument) {\n\t this.type = syntax_1.Syntax.AwaitExpression;\n\t this.argument = argument;\n\t }\n\t return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t function BinaryExpression(operator, left, right) {\n\t var logical = (operator === '||' || operator === '&&');\n\t this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t this.operator = operator;\n\t this.left = left;\n\t this.right = right;\n\t }\n\t return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t function BlockStatement(body) {\n\t this.type = syntax_1.Syntax.BlockStatement;\n\t this.body = body;\n\t }\n\t return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t function BreakStatement(label) {\n\t this.type = syntax_1.Syntax.BreakStatement;\n\t this.label = label;\n\t }\n\t return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t function CallExpression(callee, args) {\n\t this.type = syntax_1.Syntax.CallExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t function CatchClause(param, body) {\n\t this.type = syntax_1.Syntax.CatchClause;\n\t this.param = param;\n\t this.body = body;\n\t }\n\t return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t function ClassBody(body) {\n\t this.type = syntax_1.Syntax.ClassBody;\n\t this.body = body;\n\t }\n\t return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t function ClassDeclaration(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassDeclaration;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t function ClassExpression(id, superClass, body) {\n\t this.type = syntax_1.Syntax.ClassExpression;\n\t this.id = id;\n\t this.superClass = superClass;\n\t this.body = body;\n\t }\n\t return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t function ComputedMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = true;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t function ConditionalExpression(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.ConditionalExpression;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t function ContinueStatement(label) {\n\t this.type = syntax_1.Syntax.ContinueStatement;\n\t this.label = label;\n\t }\n\t return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t function DebuggerStatement() {\n\t this.type = syntax_1.Syntax.DebuggerStatement;\n\t }\n\t return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t function Directive(expression, directive) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t this.directive = directive;\n\t }\n\t return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t function DoWhileStatement(body, test) {\n\t this.type = syntax_1.Syntax.DoWhileStatement;\n\t this.body = body;\n\t this.test = test;\n\t }\n\t return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t function EmptyStatement() {\n\t this.type = syntax_1.Syntax.EmptyStatement;\n\t }\n\t return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t function ExportAllDeclaration(source) {\n\t this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t this.source = source;\n\t }\n\t return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t function ExportDefaultDeclaration(declaration) {\n\t this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t this.declaration = declaration;\n\t }\n\t return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t function ExportNamedDeclaration(declaration, specifiers, source) {\n\t this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t this.declaration = declaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t function ExportSpecifier(local, exported) {\n\t this.type = syntax_1.Syntax.ExportSpecifier;\n\t this.exported = exported;\n\t this.local = local;\n\t }\n\t return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t function ExpressionStatement(expression) {\n\t this.type = syntax_1.Syntax.ExpressionStatement;\n\t this.expression = expression;\n\t }\n\t return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t function ForInStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForInStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t this.each = false;\n\t }\n\t return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t function ForOfStatement(left, right, body) {\n\t this.type = syntax_1.Syntax.ForOfStatement;\n\t this.left = left;\n\t this.right = right;\n\t this.body = body;\n\t }\n\t return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t function ForStatement(init, test, update, body) {\n\t this.type = syntax_1.Syntax.ForStatement;\n\t this.init = init;\n\t this.test = test;\n\t this.update = update;\n\t this.body = body;\n\t }\n\t return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t function FunctionDeclaration(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionDeclaration;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t function FunctionExpression(id, params, body, generator) {\n\t this.type = syntax_1.Syntax.FunctionExpression;\n\t this.id = id;\n\t this.params = params;\n\t this.body = body;\n\t this.generator = generator;\n\t this.expression = false;\n\t this.async = false;\n\t }\n\t return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t function Identifier(name) {\n\t this.type = syntax_1.Syntax.Identifier;\n\t this.name = name;\n\t }\n\t return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t function IfStatement(test, consequent, alternate) {\n\t this.type = syntax_1.Syntax.IfStatement;\n\t this.test = test;\n\t this.consequent = consequent;\n\t this.alternate = alternate;\n\t }\n\t return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t function ImportDeclaration(specifiers, source) {\n\t this.type = syntax_1.Syntax.ImportDeclaration;\n\t this.specifiers = specifiers;\n\t this.source = source;\n\t }\n\t return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t function ImportDefaultSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t this.local = local;\n\t }\n\t return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t function ImportNamespaceSpecifier(local) {\n\t this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t this.local = local;\n\t }\n\t return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t function ImportSpecifier(local, imported) {\n\t this.type = syntax_1.Syntax.ImportSpecifier;\n\t this.local = local;\n\t this.imported = imported;\n\t }\n\t return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t function LabeledStatement(label, body) {\n\t this.type = syntax_1.Syntax.LabeledStatement;\n\t this.label = label;\n\t this.body = body;\n\t }\n\t return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t function Literal(value, raw) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t }\n\t return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t function MetaProperty(meta, property) {\n\t this.type = syntax_1.Syntax.MetaProperty;\n\t this.meta = meta;\n\t this.property = property;\n\t }\n\t return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t function MethodDefinition(key, computed, value, kind, isStatic) {\n\t this.type = syntax_1.Syntax.MethodDefinition;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.static = isStatic;\n\t }\n\t return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t function Module(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'module';\n\t }\n\t return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t function NewExpression(callee, args) {\n\t this.type = syntax_1.Syntax.NewExpression;\n\t this.callee = callee;\n\t this.arguments = args;\n\t }\n\t return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t function ObjectExpression(properties) {\n\t this.type = syntax_1.Syntax.ObjectExpression;\n\t this.properties = properties;\n\t }\n\t return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t function ObjectPattern(properties) {\n\t this.type = syntax_1.Syntax.ObjectPattern;\n\t this.properties = properties;\n\t }\n\t return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t function Property(kind, key, computed, value, method, shorthand) {\n\t this.type = syntax_1.Syntax.Property;\n\t this.key = key;\n\t this.computed = computed;\n\t this.value = value;\n\t this.kind = kind;\n\t this.method = method;\n\t this.shorthand = shorthand;\n\t }\n\t return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t function RegexLiteral(value, raw, pattern, flags) {\n\t this.type = syntax_1.Syntax.Literal;\n\t this.value = value;\n\t this.raw = raw;\n\t this.regex = { pattern: pattern, flags: flags };\n\t }\n\t return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t function RestElement(argument) {\n\t this.type = syntax_1.Syntax.RestElement;\n\t this.argument = argument;\n\t }\n\t return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t function ReturnStatement(argument) {\n\t this.type = syntax_1.Syntax.ReturnStatement;\n\t this.argument = argument;\n\t }\n\t return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t function Script(body) {\n\t this.type = syntax_1.Syntax.Program;\n\t this.body = body;\n\t this.sourceType = 'script';\n\t }\n\t return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t function SequenceExpression(expressions) {\n\t this.type = syntax_1.Syntax.SequenceExpression;\n\t this.expressions = expressions;\n\t }\n\t return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t function SpreadElement(argument) {\n\t this.type = syntax_1.Syntax.SpreadElement;\n\t this.argument = argument;\n\t }\n\t return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t function StaticMemberExpression(object, property) {\n\t this.type = syntax_1.Syntax.MemberExpression;\n\t this.computed = false;\n\t this.object = object;\n\t this.property = property;\n\t }\n\t return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t function Super() {\n\t this.type = syntax_1.Syntax.Super;\n\t }\n\t return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t function SwitchCase(test, consequent) {\n\t this.type = syntax_1.Syntax.SwitchCase;\n\t this.test = test;\n\t this.consequent = consequent;\n\t }\n\t return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t function SwitchStatement(discriminant, cases) {\n\t this.type = syntax_1.Syntax.SwitchStatement;\n\t this.discriminant = discriminant;\n\t this.cases = cases;\n\t }\n\t return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t function TaggedTemplateExpression(tag, quasi) {\n\t this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t this.tag = tag;\n\t this.quasi = quasi;\n\t }\n\t return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t function TemplateElement(value, tail) {\n\t this.type = syntax_1.Syntax.TemplateElement;\n\t this.value = value;\n\t this.tail = tail;\n\t }\n\t return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t function TemplateLiteral(quasis, expressions) {\n\t this.type = syntax_1.Syntax.TemplateLiteral;\n\t this.quasis = quasis;\n\t this.expressions = expressions;\n\t }\n\t return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t function ThisExpression() {\n\t this.type = syntax_1.Syntax.ThisExpression;\n\t }\n\t return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t function ThrowStatement(argument) {\n\t this.type = syntax_1.Syntax.ThrowStatement;\n\t this.argument = argument;\n\t }\n\t return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t function TryStatement(block, handler, finalizer) {\n\t this.type = syntax_1.Syntax.TryStatement;\n\t this.block = block;\n\t this.handler = handler;\n\t this.finalizer = finalizer;\n\t }\n\t return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t function UnaryExpression(operator, argument) {\n\t this.type = syntax_1.Syntax.UnaryExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = true;\n\t }\n\t return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t function UpdateExpression(operator, argument, prefix) {\n\t this.type = syntax_1.Syntax.UpdateExpression;\n\t this.operator = operator;\n\t this.argument = argument;\n\t this.prefix = prefix;\n\t }\n\t return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t function VariableDeclaration(declarations, kind) {\n\t this.type = syntax_1.Syntax.VariableDeclaration;\n\t this.declarations = declarations;\n\t this.kind = kind;\n\t }\n\t return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t function VariableDeclarator(id, init) {\n\t this.type = syntax_1.Syntax.VariableDeclarator;\n\t this.id = id;\n\t this.init = init;\n\t }\n\t return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t function WhileStatement(test, body) {\n\t this.type = syntax_1.Syntax.WhileStatement;\n\t this.test = test;\n\t this.body = body;\n\t }\n\t return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t function WithStatement(object, body) {\n\t this.type = syntax_1.Syntax.WithStatement;\n\t this.object = object;\n\t this.body = body;\n\t }\n\t return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t function YieldExpression(argument, delegate) {\n\t this.type = syntax_1.Syntax.YieldExpression;\n\t this.argument = argument;\n\t this.delegate = delegate;\n\t }\n\t return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t function Parser(code, options, delegate) {\n\t if (options === void 0) { options = {}; }\n\t this.config = {\n\t range: (typeof options.range === 'boolean') && options.range,\n\t loc: (typeof options.loc === 'boolean') && options.loc,\n\t source: null,\n\t tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t comment: (typeof options.comment === 'boolean') && options.comment,\n\t tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t };\n\t if (this.config.loc && options.source && options.source !== null) {\n\t this.config.source = String(options.source);\n\t }\n\t this.delegate = delegate;\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = this.config.tolerant;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = this.config.comment;\n\t this.operatorPrecedence = {\n\t ')': 0,\n\t ';': 0,\n\t ',': 0,\n\t '=': 0,\n\t ']': 0,\n\t '||': 1,\n\t '&&': 2,\n\t '|': 3,\n\t '^': 4,\n\t '&': 5,\n\t '==': 6,\n\t '!=': 6,\n\t '===': 6,\n\t '!==': 6,\n\t '<': 7,\n\t '>': 7,\n\t '<=': 7,\n\t '>=': 7,\n\t '<<': 8,\n\t '>>': 8,\n\t '>>>': 8,\n\t '+': 9,\n\t '-': 9,\n\t '*': 11,\n\t '/': 11,\n\t '%': 11\n\t };\n\t this.lookahead = {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.scanner.lineNumber,\n\t lineStart: 0,\n\t start: 0,\n\t end: 0\n\t };\n\t this.hasLineTerminator = false;\n\t this.context = {\n\t isModule: false,\n\t await: false,\n\t allowIn: true,\n\t allowStrictDirective: true,\n\t allowYield: true,\n\t firstCoverInitializedNameError: null,\n\t isAssignmentTarget: false,\n\t isBindingElement: false,\n\t inFunctionBody: false,\n\t inIteration: false,\n\t inSwitch: false,\n\t labelSet: {},\n\t strict: false\n\t };\n\t this.tokens = [];\n\t this.startMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.lastMarker = {\n\t index: 0,\n\t line: this.scanner.lineNumber,\n\t column: 0\n\t };\n\t this.nextToken();\n\t this.lastMarker = {\n\t index: this.scanner.index,\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t }\n\t Parser.prototype.throwError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t throw this.errorHandler.createError(index, line, column, msg);\n\t };\n\t Parser.prototype.tolerateError = function (messageFormat) {\n\t var values = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t values[_i - 1] = arguments[_i];\n\t }\n\t var args = Array.prototype.slice.call(arguments, 1);\n\t var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t return args[idx];\n\t });\n\t var index = this.lastMarker.index;\n\t var line = this.scanner.lineNumber;\n\t var column = this.lastMarker.column + 1;\n\t this.errorHandler.tolerateError(index, line, column, msg);\n\t };\n\t // Throw an exception because of the token.\n\t Parser.prototype.unexpectedTokenError = function (token, message) {\n\t var msg = message || messages_1.Messages.UnexpectedToken;\n\t var value;\n\t if (token) {\n\t if (!message) {\n\t msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t messages_1.Messages.UnexpectedToken;\n\t if (token.type === 4 /* Keyword */) {\n\t if (this.scanner.isFutureReservedWord(token.value)) {\n\t msg = messages_1.Messages.UnexpectedReserved;\n\t }\n\t else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t msg = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t value = token.value;\n\t }\n\t else {\n\t value = 'ILLEGAL';\n\t }\n\t msg = msg.replace('%0', value);\n\t if (token && typeof token.lineNumber === 'number') {\n\t var index = token.start;\n\t var line = token.lineNumber;\n\t var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t var column = token.start - lastMarkerLineStart + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t else {\n\t var index = this.lastMarker.index;\n\t var line = this.lastMarker.line;\n\t var column = this.lastMarker.column + 1;\n\t return this.errorHandler.createError(index, line, column, msg);\n\t }\n\t };\n\t Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t throw this.unexpectedTokenError(token, message);\n\t };\n\t Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t };\n\t Parser.prototype.collectComments = function () {\n\t if (!this.config.comment) {\n\t this.scanner.scanComments();\n\t }\n\t else {\n\t var comments = this.scanner.scanComments();\n\t if (comments.length > 0 && this.delegate) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var node = void 0;\n\t node = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t };\n\t if (this.config.range) {\n\t node.range = e.range;\n\t }\n\t if (this.config.loc) {\n\t node.loc = e.loc;\n\t }\n\t var metadata = {\n\t start: {\n\t line: e.loc.start.line,\n\t column: e.loc.start.column,\n\t offset: e.range[0]\n\t },\n\t end: {\n\t line: e.loc.end.line,\n\t column: e.loc.end.column,\n\t offset: e.range[1]\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t }\n\t }\n\t };\n\t // From internal representation to an external structure\n\t Parser.prototype.getTokenRaw = function (token) {\n\t return this.scanner.source.slice(token.start, token.end);\n\t };\n\t Parser.prototype.convertToken = function (token) {\n\t var t = {\n\t type: token_1.TokenName[token.type],\n\t value: this.getTokenRaw(token)\n\t };\n\t if (this.config.range) {\n\t t.range = [token.start, token.end];\n\t }\n\t if (this.config.loc) {\n\t t.loc = {\n\t start: {\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t },\n\t end: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t }\n\t };\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t t.regex = { pattern: pattern, flags: flags };\n\t }\n\t return t;\n\t };\n\t Parser.prototype.nextToken = function () {\n\t var token = this.lookahead;\n\t this.lastMarker.index = this.scanner.index;\n\t this.lastMarker.line = this.scanner.lineNumber;\n\t this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t this.collectComments();\n\t if (this.scanner.index !== this.startMarker.index) {\n\t this.startMarker.index = this.scanner.index;\n\t this.startMarker.line = this.scanner.lineNumber;\n\t this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t }\n\t var next = this.scanner.lex();\n\t this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t next.type = 4 /* Keyword */;\n\t }\n\t }\n\t this.lookahead = next;\n\t if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t this.tokens.push(this.convertToken(next));\n\t }\n\t return token;\n\t };\n\t Parser.prototype.nextRegexToken = function () {\n\t this.collectComments();\n\t var token = this.scanner.scanRegExp();\n\t if (this.config.tokens) {\n\t // Pop the previous token, '/' or '/='\n\t // This is added from the lookahead token.\n\t this.tokens.pop();\n\t this.tokens.push(this.convertToken(token));\n\t }\n\t // Prime the next lookahead.\n\t this.lookahead = token;\n\t this.nextToken();\n\t return token;\n\t };\n\t Parser.prototype.createNode = function () {\n\t return {\n\t index: this.startMarker.index,\n\t line: this.startMarker.line,\n\t column: this.startMarker.column\n\t };\n\t };\n\t Parser.prototype.startNode = function (token, lastLineStart) {\n\t if (lastLineStart === void 0) { lastLineStart = 0; }\n\t var column = token.start - token.lineStart;\n\t var line = token.lineNumber;\n\t if (column < 0) {\n\t column += lastLineStart;\n\t line--;\n\t }\n\t return {\n\t index: token.start,\n\t line: line,\n\t column: column\n\t };\n\t };\n\t Parser.prototype.finalize = function (marker, node) {\n\t if (this.config.range) {\n\t node.range = [marker.index, this.lastMarker.index];\n\t }\n\t if (this.config.loc) {\n\t node.loc = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column\n\t }\n\t };\n\t if (this.config.source) {\n\t node.loc.source = this.config.source;\n\t }\n\t }\n\t if (this.delegate) {\n\t var metadata = {\n\t start: {\n\t line: marker.line,\n\t column: marker.column,\n\t offset: marker.index\n\t },\n\t end: {\n\t line: this.lastMarker.line,\n\t column: this.lastMarker.column,\n\t offset: this.lastMarker.index\n\t }\n\t };\n\t this.delegate(node, metadata);\n\t }\n\t return node;\n\t };\n\t // Expect the next token to match the specified punctuator.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expect = function (value) {\n\t var token = this.nextToken();\n\t if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t Parser.prototype.expectCommaSeparator = function () {\n\t if (this.config.tolerant) {\n\t var token = this.lookahead;\n\t if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t this.nextToken();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t this.nextToken();\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t else {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t }\n\t }\n\t else {\n\t this.expect(',');\n\t }\n\t };\n\t // Expect the next token to match the specified keyword.\n\t // If not, an exception will be thrown.\n\t Parser.prototype.expectKeyword = function (keyword) {\n\t var token = this.nextToken();\n\t if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t };\n\t // Return true if the next token matches the specified punctuator.\n\t Parser.prototype.match = function (value) {\n\t return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t };\n\t // Return true if the next token matches the specified keyword\n\t Parser.prototype.matchKeyword = function (keyword) {\n\t return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token matches the specified contextual keyword\n\t // (where an identifier is sometimes a keyword depending on the context)\n\t Parser.prototype.matchContextualKeyword = function (keyword) {\n\t return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t };\n\t // Return true if the next token is an assignment operator\n\t Parser.prototype.matchAssign = function () {\n\t if (this.lookahead.type !== 7 /* Punctuator */) {\n\t return false;\n\t }\n\t var op = this.lookahead.value;\n\t return op === '=' ||\n\t op === '*=' ||\n\t op === '**=' ||\n\t op === '/=' ||\n\t op === '%=' ||\n\t op === '+=' ||\n\t op === '-=' ||\n\t op === '<<=' ||\n\t op === '>>=' ||\n\t op === '>>>=' ||\n\t op === '&=' ||\n\t op === '^=' ||\n\t op === '|=';\n\t };\n\t // Cover grammar support.\n\t //\n\t // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t //\n\t // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t // after the outermost pair is closed. They are:\n\t //\n\t // 1. AssignmentExpression\n\t // 2. BindingElements\n\t // 3. AssignmentTargets\n\t //\n\t // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t // binding element or assignment target.\n\t //\n\t // The three productions have the relationship:\n\t //\n\t // BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t //\n\t // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t //\n\t // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t // the CoverInitializedName check is conducted.\n\t //\n\t // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t // pattern. The CoverInitializedName check is deferred.\n\t Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t if (this.context.firstCoverInitializedNameError !== null) {\n\t this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t }\n\t this.context.isBindingElement = previousIsBindingElement;\n\t this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t var previousIsBindingElement = this.context.isBindingElement;\n\t var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t this.context.isBindingElement = true;\n\t this.context.isAssignmentTarget = true;\n\t this.context.firstCoverInitializedNameError = null;\n\t var result = parseFunction.call(this);\n\t this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t return result;\n\t };\n\t Parser.prototype.consumeSemicolon = function () {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else if (!this.hasLineTerminator) {\n\t if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.lastMarker.index = this.startMarker.index;\n\t this.lastMarker.line = this.startMarker.line;\n\t this.lastMarker.column = this.startMarker.column;\n\t }\n\t };\n\t // https://tc39.github.io/ecma262/#sec-primary-expression\n\t Parser.prototype.parsePrimaryExpression = function () {\n\t var node = this.createNode();\n\t var expr;\n\t var token, raw;\n\t switch (this.lookahead.type) {\n\t case 3 /* Identifier */:\n\t if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t break;\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t if (this.context.strict && this.lookahead.octal) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 1 /* BooleanLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t break;\n\t case 5 /* NullLiteral */:\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t token = this.nextToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.Literal(null, raw));\n\t break;\n\t case 10 /* Template */:\n\t expr = this.parseTemplateLiteral();\n\t break;\n\t case 7 /* Punctuator */:\n\t switch (this.lookahead.value) {\n\t case '(':\n\t this.context.isBindingElement = false;\n\t expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t break;\n\t case '[':\n\t expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t break;\n\t case '{':\n\t expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t break;\n\t case '/':\n\t case '/=':\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.scanner.index = this.startMarker.index;\n\t token = this.nextRegexToken();\n\t raw = this.getTokenRaw(token);\n\t expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t break;\n\t case 4 /* Keyword */:\n\t if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseIdentifierName();\n\t }\n\t else if (!this.context.strict && this.matchKeyword('let')) {\n\t expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t }\n\t else {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t if (this.matchKeyword('function')) {\n\t expr = this.parseFunctionExpression();\n\t }\n\t else if (this.matchKeyword('this')) {\n\t this.nextToken();\n\t expr = this.finalize(node, new Node.ThisExpression());\n\t }\n\t else if (this.matchKeyword('class')) {\n\t expr = this.parseClassExpression();\n\t }\n\t else {\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t break;\n\t default:\n\t expr = this.throwUnexpectedToken(this.nextToken());\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-array-initializer\n\t Parser.prototype.parseSpreadElement = function () {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t return this.finalize(node, new Node.SpreadElement(arg));\n\t };\n\t Parser.prototype.parseArrayInitializer = function () {\n\t var node = this.createNode();\n\t var elements = [];\n\t this.expect('[');\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else if (this.match('...')) {\n\t var element = this.parseSpreadElement();\n\t if (!this.match(']')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t this.expect(',');\n\t }\n\t elements.push(element);\n\t }\n\t else {\n\t elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayExpression(elements));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-object-initializer\n\t Parser.prototype.parsePropertyMethod = function (params) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = params.simple;\n\t var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t if (this.context.strict && params.firstRestricted) {\n\t this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t }\n\t if (this.context.strict && params.stricted) {\n\t this.tolerateUnexpectedToken(params.stricted, params.message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t return body;\n\t };\n\t Parser.prototype.parsePropertyMethodFunction = function () {\n\t var isGenerator = false;\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t var node = this.createNode();\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = false;\n\t this.context.await = true;\n\t var params = this.parseFormalParameters();\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t };\n\t Parser.prototype.parseObjectPropertyKey = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var key;\n\t switch (token.type) {\n\t case 8 /* StringLiteral */:\n\t case 6 /* NumericLiteral */:\n\t if (this.context.strict && token.octal) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t var raw = this.getTokenRaw(token);\n\t key = this.finalize(node, new Node.Literal(token.value, raw));\n\t break;\n\t case 3 /* Identifier */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 4 /* Keyword */:\n\t key = this.finalize(node, new Node.Identifier(token.value));\n\t break;\n\t case 7 /* Punctuator */:\n\t if (token.value === '[') {\n\t key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.expect(']');\n\t }\n\t else {\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t break;\n\t default:\n\t key = this.throwUnexpectedToken(token);\n\t }\n\t return key;\n\t };\n\t Parser.prototype.isPropertyKey = function (key, value) {\n\t return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t };\n\t Parser.prototype.parseObjectProperty = function (hasProto) {\n\t var node = this.createNode();\n\t var token = this.lookahead;\n\t var kind;\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var shorthand = false;\n\t var isAsync = false;\n\t if (token.type === 3 /* Identifier */) {\n\t var id = token.value;\n\t this.nextToken();\n\t computed = this.match('[');\n\t isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t }\n\t else if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t else {\n\t if (!key) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t kind = 'init';\n\t if (this.match(':') && !isAsync) {\n\t if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t if (hasProto.value) {\n\t this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t }\n\t hasProto.value = true;\n\t }\n\t this.nextToken();\n\t value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (this.match('(')) {\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t else if (token.type === 3 /* Identifier */) {\n\t var id = this.finalize(node, new Node.Identifier(token.value));\n\t if (this.match('=')) {\n\t this.context.firstCoverInitializedNameError = this.lookahead;\n\t this.nextToken();\n\t shorthand = true;\n\t var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t }\n\t else {\n\t shorthand = true;\n\t value = id;\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectInitializer = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var properties = [];\n\t var hasProto = { value: false };\n\t while (!this.match('}')) {\n\t properties.push(this.parseObjectProperty(hasProto));\n\t if (!this.match('}')) {\n\t this.expectCommaSeparator();\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectExpression(properties));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literals\n\t Parser.prototype.parseTemplateHead = function () {\n\t assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateElement = function () {\n\t if (this.lookahead.type !== 10 /* Template */) {\n\t this.throwUnexpectedToken();\n\t }\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t var raw = token.value;\n\t var cooked = token.cooked;\n\t return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t };\n\t Parser.prototype.parseTemplateLiteral = function () {\n\t var node = this.createNode();\n\t var expressions = [];\n\t var quasis = [];\n\t var quasi = this.parseTemplateHead();\n\t quasis.push(quasi);\n\t while (!quasi.tail) {\n\t expressions.push(this.parseExpression());\n\t quasi = this.parseTemplateElement();\n\t quasis.push(quasi);\n\t }\n\t return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t case syntax_1.Syntax.MemberExpression:\n\t case syntax_1.Syntax.RestElement:\n\t case syntax_1.Syntax.AssignmentPattern:\n\t break;\n\t case syntax_1.Syntax.SpreadElement:\n\t expr.type = syntax_1.Syntax.RestElement;\n\t this.reinterpretExpressionAsPattern(expr.argument);\n\t break;\n\t case syntax_1.Syntax.ArrayExpression:\n\t expr.type = syntax_1.Syntax.ArrayPattern;\n\t for (var i = 0; i < expr.elements.length; i++) {\n\t if (expr.elements[i] !== null) {\n\t this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectExpression:\n\t expr.type = syntax_1.Syntax.ObjectPattern;\n\t for (var i = 0; i < expr.properties.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t }\n\t break;\n\t case syntax_1.Syntax.AssignmentExpression:\n\t expr.type = syntax_1.Syntax.AssignmentPattern;\n\t delete expr.operator;\n\t this.reinterpretExpressionAsPattern(expr.left);\n\t break;\n\t default:\n\t // Allow other node type for tolerant parsing.\n\t break;\n\t }\n\t };\n\t Parser.prototype.parseGroupExpression = function () {\n\t var expr;\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.nextToken();\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [],\n\t async: false\n\t };\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var params = [];\n\t if (this.match('...')) {\n\t expr = this.parseRestElement(params);\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t else {\n\t var arrow = false;\n\t this.context.isBindingElement = true;\n\t expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t this.context.isAssignmentTarget = false;\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t if (this.match(')')) {\n\t this.nextToken();\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else if (this.match('...')) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t expressions.push(this.parseRestElement(params));\n\t this.expect(')');\n\t if (!this.match('=>')) {\n\t this.expect('=>');\n\t }\n\t this.context.isBindingElement = false;\n\t for (var i = 0; i < expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expressions[i]);\n\t }\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: expressions,\n\t async: false\n\t };\n\t }\n\t else {\n\t expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t if (arrow) {\n\t break;\n\t }\n\t }\n\t if (!arrow) {\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t }\n\t if (!arrow) {\n\t this.expect(')');\n\t if (this.match('=>')) {\n\t if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t arrow = true;\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [expr],\n\t async: false\n\t };\n\t }\n\t if (!arrow) {\n\t if (!this.context.isBindingElement) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t for (var i = 0; i < expr.expressions.length; i++) {\n\t this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t }\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: parameters,\n\t async: false\n\t };\n\t }\n\t }\n\t this.context.isBindingElement = false;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t Parser.prototype.parseArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.isIdentifierName = function (token) {\n\t return token.type === 3 /* Identifier */ ||\n\t token.type === 4 /* Keyword */ ||\n\t token.type === 1 /* BooleanLiteral */ ||\n\t token.type === 5 /* NullLiteral */;\n\t };\n\t Parser.prototype.parseIdentifierName = function () {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (!this.isIdentifierName(token)) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseNewExpression = function () {\n\t var node = this.createNode();\n\t var id = this.parseIdentifierName();\n\t assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t var expr;\n\t if (this.match('.')) {\n\t this.nextToken();\n\t if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t var property = this.parseIdentifierName();\n\t expr = new Node.MetaProperty(id, property);\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t var args = this.match('(') ? this.parseArguments() : [];\n\t expr = new Node.NewExpression(callee, args);\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return this.finalize(node, expr);\n\t };\n\t Parser.prototype.parseAsyncArgument = function () {\n\t var arg = this.parseAssignmentExpression();\n\t this.context.firstCoverInitializedNameError = null;\n\t return arg;\n\t };\n\t Parser.prototype.parseAsyncArguments = function () {\n\t this.expect('(');\n\t var args = [];\n\t if (!this.match(')')) {\n\t while (true) {\n\t var expr = this.match('...') ? this.parseSpreadElement() :\n\t this.isolateCoverGrammar(this.parseAsyncArgument);\n\t args.push(expr);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expectCommaSeparator();\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return args;\n\t };\n\t Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t var startToken = this.lookahead;\n\t var maybeAsync = this.matchContextualKeyword('async');\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var expr;\n\t if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t expr = this.createNode();\n\t this.nextToken();\n\t expr = this.finalize(expr, new Node.Super());\n\t if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t }\n\t while (true) {\n\t if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.match('(')) {\n\t var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = false;\n\t var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t if (asyncArrow && this.match('=>')) {\n\t for (var i = 0; i < args.length; ++i) {\n\t this.reinterpretExpressionAsPattern(args[i]);\n\t }\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: args,\n\t async: true\n\t };\n\t }\n\t }\n\t else if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t this.context.allowIn = previousAllowIn;\n\t return expr;\n\t };\n\t Parser.prototype.parseSuper = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('super');\n\t if (!this.match('[') && !this.match('.')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return this.finalize(node, new Node.Super());\n\t };\n\t Parser.prototype.parseLeftHandSideExpression = function () {\n\t assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t var node = this.startNode(this.lookahead);\n\t var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t while (true) {\n\t if (this.match('[')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('[');\n\t var property = this.isolateCoverGrammar(this.parseExpression);\n\t this.expect(']');\n\t expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t }\n\t else if (this.match('.')) {\n\t this.context.isBindingElement = false;\n\t this.context.isAssignmentTarget = true;\n\t this.expect('.');\n\t var property = this.parseIdentifierName();\n\t expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t }\n\t else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t var quasi = this.parseTemplateLiteral();\n\t expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-update-expressions\n\t Parser.prototype.parseUpdateExpression = function () {\n\t var expr;\n\t var startToken = this.lookahead;\n\t if (this.match('++') || this.match('--')) {\n\t var node = this.startNode(startToken);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t var prefix = true;\n\t expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t if (this.match('++') || this.match('--')) {\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t }\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var operator = this.nextToken().value;\n\t var prefix = false;\n\t expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-unary-operators\n\t Parser.prototype.parseAwaitExpression = function () {\n\t var node = this.createNode();\n\t this.nextToken();\n\t var argument = this.parseUnaryExpression();\n\t return this.finalize(node, new Node.AwaitExpression(argument));\n\t };\n\t Parser.prototype.parseUnaryExpression = function () {\n\t var expr;\n\t if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t var node = this.startNode(this.lookahead);\n\t var token = this.nextToken();\n\t expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t this.tolerateError(messages_1.Messages.StrictDelete);\n\t }\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else if (this.context.await && this.matchContextualKeyword('await')) {\n\t expr = this.parseAwaitExpression();\n\t }\n\t else {\n\t expr = this.parseUpdateExpression();\n\t }\n\t return expr;\n\t };\n\t Parser.prototype.parseExponentiationExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exp-operator\n\t // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t // https://tc39.github.io/ecma262/#sec-additive-operators\n\t // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t // https://tc39.github.io/ecma262/#sec-relational-operators\n\t // https://tc39.github.io/ecma262/#sec-equality-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t Parser.prototype.binaryPrecedence = function (token) {\n\t var op = token.value;\n\t var precedence;\n\t if (token.type === 7 /* Punctuator */) {\n\t precedence = this.operatorPrecedence[op] || 0;\n\t }\n\t else if (token.type === 4 /* Keyword */) {\n\t precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t }\n\t else {\n\t precedence = 0;\n\t }\n\t return precedence;\n\t };\n\t Parser.prototype.parseBinaryExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t var token = this.lookahead;\n\t var prec = this.binaryPrecedence(token);\n\t if (prec > 0) {\n\t this.nextToken();\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var markers = [startToken, this.lookahead];\n\t var left = expr;\n\t var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t var stack = [left, token.value, right];\n\t var precedences = [prec];\n\t while (true) {\n\t prec = this.binaryPrecedence(this.lookahead);\n\t if (prec <= 0) {\n\t break;\n\t }\n\t // Reduce: make a binary expression from the three topmost entries.\n\t while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t right = stack.pop();\n\t var operator = stack.pop();\n\t precedences.pop();\n\t left = stack.pop();\n\t markers.pop();\n\t var node = this.startNode(markers[markers.length - 1]);\n\t stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t }\n\t // Shift.\n\t stack.push(this.nextToken().value);\n\t precedences.push(prec);\n\t markers.push(this.lookahead);\n\t stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t }\n\t // Final reduce to clean-up the stack.\n\t var i = stack.length - 1;\n\t expr = stack[i];\n\t var lastMarker = markers.pop();\n\t while (i > 1) {\n\t var marker = markers.pop();\n\t var lastLineStart = lastMarker && lastMarker.lineStart;\n\t var node = this.startNode(marker, lastLineStart);\n\t var operator = stack[i - 1];\n\t expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t i -= 2;\n\t lastMarker = marker;\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t Parser.prototype.parseConditionalExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t if (this.match('?')) {\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t this.expect(':');\n\t var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t Parser.prototype.checkPatternParam = function (options, param) {\n\t switch (param.type) {\n\t case syntax_1.Syntax.Identifier:\n\t this.validateParam(options, param, param.name);\n\t break;\n\t case syntax_1.Syntax.RestElement:\n\t this.checkPatternParam(options, param.argument);\n\t break;\n\t case syntax_1.Syntax.AssignmentPattern:\n\t this.checkPatternParam(options, param.left);\n\t break;\n\t case syntax_1.Syntax.ArrayPattern:\n\t for (var i = 0; i < param.elements.length; i++) {\n\t if (param.elements[i] !== null) {\n\t this.checkPatternParam(options, param.elements[i]);\n\t }\n\t }\n\t break;\n\t case syntax_1.Syntax.ObjectPattern:\n\t for (var i = 0; i < param.properties.length; i++) {\n\t this.checkPatternParam(options, param.properties[i].value);\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t };\n\t Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t var params = [expr];\n\t var options;\n\t var asyncArrow = false;\n\t switch (expr.type) {\n\t case syntax_1.Syntax.Identifier:\n\t break;\n\t case ArrowParameterPlaceHolder:\n\t params = expr.params;\n\t asyncArrow = expr.async;\n\t break;\n\t default:\n\t return null;\n\t }\n\t options = {\n\t simple: true,\n\t paramSet: {}\n\t };\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t if (param.right.argument) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t param.right.type = syntax_1.Syntax.Identifier;\n\t param.right.name = 'yield';\n\t delete param.right.argument;\n\t delete param.right.delegate;\n\t }\n\t }\n\t else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t this.checkPatternParam(options, param);\n\t params[i] = param;\n\t }\n\t if (this.context.strict || !this.context.allowYield) {\n\t for (var i = 0; i < params.length; ++i) {\n\t var param = params[i];\n\t if (param.type === syntax_1.Syntax.YieldExpression) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t if (options.message === messages_1.Messages.StrictParamDupe) {\n\t var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t this.throwUnexpectedToken(token, options.message);\n\t }\n\t return {\n\t simple: options.simple,\n\t params: params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.parseAssignmentExpression = function () {\n\t var expr;\n\t if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t expr = this.parseYieldExpression();\n\t }\n\t else {\n\t var startToken = this.lookahead;\n\t var token = startToken;\n\t expr = this.parseConditionalExpression();\n\t if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t var arg = this.parsePrimaryExpression();\n\t this.reinterpretExpressionAsPattern(arg);\n\t expr = {\n\t type: ArrowParameterPlaceHolder,\n\t params: [arg],\n\t async: true\n\t };\n\t }\n\t }\n\t if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t var isAsync = expr.async;\n\t var list = this.reinterpretAsCoverFormalsList(expr);\n\t if (list) {\n\t if (this.hasLineTerminator) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t }\n\t this.context.firstCoverInitializedNameError = null;\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = list.simple;\n\t var previousAllowYield = this.context.allowYield;\n\t var previousAwait = this.context.await;\n\t this.context.allowYield = true;\n\t this.context.await = isAsync;\n\t var node = this.startNode(startToken);\n\t this.expect('=>');\n\t var body = void 0;\n\t if (this.match('{')) {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = true;\n\t body = this.parseFunctionSourceElements();\n\t this.context.allowIn = previousAllowIn;\n\t }\n\t else {\n\t body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t if (this.context.strict && list.firstRestricted) {\n\t this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t }\n\t if (this.context.strict && list.stricted) {\n\t this.tolerateUnexpectedToken(list.stricted, list.message);\n\t }\n\t expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.allowYield = previousAllowYield;\n\t this.context.await = previousAwait;\n\t }\n\t }\n\t else {\n\t if (this.matchAssign()) {\n\t if (!this.context.isAssignmentTarget) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t }\n\t if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t var id = expr;\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t }\n\t if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t }\n\t if (!this.match('=')) {\n\t this.context.isAssignmentTarget = false;\n\t this.context.isBindingElement = false;\n\t }\n\t else {\n\t this.reinterpretExpressionAsPattern(expr);\n\t }\n\t token = this.nextToken();\n\t var operator = token.value;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t this.context.firstCoverInitializedNameError = null;\n\t }\n\t }\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comma-operator\n\t Parser.prototype.parseExpression = function () {\n\t var startToken = this.lookahead;\n\t var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t if (this.match(',')) {\n\t var expressions = [];\n\t expressions.push(expr);\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (!this.match(',')) {\n\t break;\n\t }\n\t this.nextToken();\n\t expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t }\n\t return expr;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-block\n\t Parser.prototype.parseStatementListItem = function () {\n\t var statement;\n\t this.context.isAssignmentTarget = true;\n\t this.context.isBindingElement = true;\n\t if (this.lookahead.type === 4 /* Keyword */) {\n\t switch (this.lookahead.value) {\n\t case 'export':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t statement = this.parseExportDeclaration();\n\t break;\n\t case 'import':\n\t if (!this.context.isModule) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t statement = this.parseImportDeclaration();\n\t break;\n\t case 'const':\n\t statement = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'class':\n\t statement = this.parseClassDeclaration();\n\t break;\n\t case 'let':\n\t statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t break;\n\t default:\n\t statement = this.parseStatement();\n\t break;\n\t }\n\t }\n\t else {\n\t statement = this.parseStatement();\n\t }\n\t return statement;\n\t };\n\t Parser.prototype.parseBlock = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var block = [];\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t block.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.BlockStatement(block));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, kind);\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (kind === 'const') {\n\t if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else {\n\t this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t }\n\t }\n\t }\n\t else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t this.expect('=');\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseBindingList = function (kind, options) {\n\t var list = [this.parseLexicalBinding(kind, options)];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseLexicalBinding(kind, options));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.isLexicalDeclaration = function () {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t return (next.type === 3 /* Identifier */) ||\n\t (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t };\n\t Parser.prototype.parseLexicalDeclaration = function (options) {\n\t var node = this.createNode();\n\t var kind = this.nextToken().value;\n\t assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t var declarations = this.parseBindingList(kind, options);\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params, kind);\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseArrayPattern = function (params, kind) {\n\t var node = this.createNode();\n\t this.expect('[');\n\t var elements = [];\n\t while (!this.match(']')) {\n\t if (this.match(',')) {\n\t this.nextToken();\n\t elements.push(null);\n\t }\n\t else {\n\t if (this.match('...')) {\n\t elements.push(this.parseBindingRestElement(params, kind));\n\t break;\n\t }\n\t else {\n\t elements.push(this.parsePatternWithDefault(params, kind));\n\t }\n\t if (!this.match(']')) {\n\t this.expect(',');\n\t }\n\t }\n\t }\n\t this.expect(']');\n\t return this.finalize(node, new Node.ArrayPattern(elements));\n\t };\n\t Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var computed = false;\n\t var shorthand = false;\n\t var method = false;\n\t var key;\n\t var value;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t var keyToken = this.lookahead;\n\t key = this.parseVariableIdentifier();\n\t var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t if (this.match('=')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t this.nextToken();\n\t var expr = this.parseAssignmentExpression();\n\t value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t }\n\t else if (!this.match(':')) {\n\t params.push(keyToken);\n\t shorthand = true;\n\t value = init;\n\t }\n\t else {\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.expect(':');\n\t value = this.parsePatternWithDefault(params, kind);\n\t }\n\t return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t };\n\t Parser.prototype.parseObjectPattern = function (params, kind) {\n\t var node = this.createNode();\n\t var properties = [];\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t properties.push(this.parsePropertyPattern(params, kind));\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return this.finalize(node, new Node.ObjectPattern(properties));\n\t };\n\t Parser.prototype.parsePattern = function (params, kind) {\n\t var pattern;\n\t if (this.match('[')) {\n\t pattern = this.parseArrayPattern(params, kind);\n\t }\n\t else if (this.match('{')) {\n\t pattern = this.parseObjectPattern(params, kind);\n\t }\n\t else {\n\t if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t }\n\t params.push(this.lookahead);\n\t pattern = this.parseVariableIdentifier(kind);\n\t }\n\t return pattern;\n\t };\n\t Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t var startToken = this.lookahead;\n\t var pattern = this.parsePattern(params, kind);\n\t if (this.match('=')) {\n\t this.nextToken();\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowYield = previousAllowYield;\n\t pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t }\n\t return pattern;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-variable-statement\n\t Parser.prototype.parseVariableIdentifier = function (kind) {\n\t var node = this.createNode();\n\t var token = this.nextToken();\n\t if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else if (!this.context.allowYield) {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t else if (token.type !== 3 /* Identifier */) {\n\t if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t }\n\t else {\n\t if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t this.throwUnexpectedToken(token);\n\t }\n\t }\n\t }\n\t else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t this.tolerateUnexpectedToken(token);\n\t }\n\t return this.finalize(node, new Node.Identifier(token.value));\n\t };\n\t Parser.prototype.parseVariableDeclaration = function (options) {\n\t var node = this.createNode();\n\t var params = [];\n\t var id = this.parsePattern(params, 'var');\n\t if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(id.name)) {\n\t this.tolerateError(messages_1.Messages.StrictVarName);\n\t }\n\t }\n\t var init = null;\n\t if (this.match('=')) {\n\t this.nextToken();\n\t init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t }\n\t else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t this.expect('=');\n\t }\n\t return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t };\n\t Parser.prototype.parseVariableDeclarationList = function (options) {\n\t var opt = { inFor: options.inFor };\n\t var list = [];\n\t list.push(this.parseVariableDeclaration(opt));\n\t while (this.match(',')) {\n\t this.nextToken();\n\t list.push(this.parseVariableDeclaration(opt));\n\t }\n\t return list;\n\t };\n\t Parser.prototype.parseVariableStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('var');\n\t var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-empty-statement\n\t Parser.prototype.parseEmptyStatement = function () {\n\t var node = this.createNode();\n\t this.expect(';');\n\t return this.finalize(node, new Node.EmptyStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-expression-statement\n\t Parser.prototype.parseExpressionStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ExpressionStatement(expr));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-if-statement\n\t Parser.prototype.parseIfClause = function () {\n\t if (this.context.strict && this.matchKeyword('function')) {\n\t this.tolerateError(messages_1.Messages.StrictFunction);\n\t }\n\t return this.parseStatement();\n\t };\n\t Parser.prototype.parseIfStatement = function () {\n\t var node = this.createNode();\n\t var consequent;\n\t var alternate = null;\n\t this.expectKeyword('if');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t consequent = this.parseIfClause();\n\t if (this.matchKeyword('else')) {\n\t this.nextToken();\n\t alternate = this.parseIfClause();\n\t }\n\t }\n\t return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t Parser.prototype.parseDoWhileStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('do');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t var body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t }\n\t else {\n\t this.expect(')');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t }\n\t return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-while-statement\n\t Parser.prototype.parseWhileStatement = function () {\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('while');\n\t this.expect('(');\n\t var test = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.parseStatement();\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return this.finalize(node, new Node.WhileStatement(test, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-for-statement\n\t // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t Parser.prototype.parseForStatement = function () {\n\t var init = null;\n\t var test = null;\n\t var update = null;\n\t var forIn = true;\n\t var left, right;\n\t var node = this.createNode();\n\t this.expectKeyword('for');\n\t this.expect('(');\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t if (this.matchKeyword('var')) {\n\t init = this.createNode();\n\t this.nextToken();\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && this.matchKeyword('in')) {\n\t var decl = declarations[0];\n\t if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t }\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t this.expect(';');\n\t }\n\t }\n\t else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t init = this.createNode();\n\t var kind = this.nextToken().value;\n\t if (!this.context.strict && this.lookahead.value === 'in') {\n\t init = this.finalize(init, new Node.Identifier(kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else {\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t var declarations = this.parseBindingList(kind, { inFor: true });\n\t this.context.allowIn = previousAllowIn;\n\t if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t this.nextToken();\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t }\n\t }\n\t }\n\t else {\n\t var initStartToken = this.lookahead;\n\t var previousAllowIn = this.context.allowIn;\n\t this.context.allowIn = false;\n\t init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t this.context.allowIn = previousAllowIn;\n\t if (this.matchKeyword('in')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseExpression();\n\t init = null;\n\t }\n\t else if (this.matchContextualKeyword('of')) {\n\t if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t }\n\t this.nextToken();\n\t this.reinterpretExpressionAsPattern(init);\n\t left = init;\n\t right = this.parseAssignmentExpression();\n\t init = null;\n\t forIn = false;\n\t }\n\t else {\n\t if (this.match(',')) {\n\t var initSeq = [init];\n\t while (this.match(',')) {\n\t this.nextToken();\n\t initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t }\n\t init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t }\n\t this.expect(';');\n\t }\n\t }\n\t }\n\t if (typeof left === 'undefined') {\n\t if (!this.match(';')) {\n\t test = this.parseExpression();\n\t }\n\t this.expect(';');\n\t if (!this.match(')')) {\n\t update = this.parseExpression();\n\t }\n\t }\n\t var body;\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t var previousInIteration = this.context.inIteration;\n\t this.context.inIteration = true;\n\t body = this.isolateCoverGrammar(this.parseStatement);\n\t this.context.inIteration = previousInIteration;\n\t }\n\t return (typeof left === 'undefined') ?\n\t this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-continue-statement\n\t Parser.prototype.parseContinueStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('continue');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t label = id;\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration) {\n\t this.throwError(messages_1.Messages.IllegalContinue);\n\t }\n\t return this.finalize(node, new Node.ContinueStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-break-statement\n\t Parser.prototype.parseBreakStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('break');\n\t var label = null;\n\t if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t var id = this.parseVariableIdentifier();\n\t var key = '$' + id.name;\n\t if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t }\n\t label = id;\n\t }\n\t this.consumeSemicolon();\n\t if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t this.throwError(messages_1.Messages.IllegalBreak);\n\t }\n\t return this.finalize(node, new Node.BreakStatement(label));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-return-statement\n\t Parser.prototype.parseReturnStatement = function () {\n\t if (!this.context.inFunctionBody) {\n\t this.tolerateError(messages_1.Messages.IllegalReturn);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('return');\n\t var hasArgument = (!this.match(';') && !this.match('}') &&\n\t !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t this.lookahead.type === 8 /* StringLiteral */ ||\n\t this.lookahead.type === 10 /* Template */;\n\t var argument = hasArgument ? this.parseExpression() : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ReturnStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-with-statement\n\t Parser.prototype.parseWithStatement = function () {\n\t if (this.context.strict) {\n\t this.tolerateError(messages_1.Messages.StrictModeWith);\n\t }\n\t var node = this.createNode();\n\t var body;\n\t this.expectKeyword('with');\n\t this.expect('(');\n\t var object = this.parseExpression();\n\t if (!this.match(')') && this.config.tolerant) {\n\t this.tolerateUnexpectedToken(this.nextToken());\n\t body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t }\n\t else {\n\t this.expect(')');\n\t body = this.parseStatement();\n\t }\n\t return this.finalize(node, new Node.WithStatement(object, body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-switch-statement\n\t Parser.prototype.parseSwitchCase = function () {\n\t var node = this.createNode();\n\t var test;\n\t if (this.matchKeyword('default')) {\n\t this.nextToken();\n\t test = null;\n\t }\n\t else {\n\t this.expectKeyword('case');\n\t test = this.parseExpression();\n\t }\n\t this.expect(':');\n\t var consequent = [];\n\t while (true) {\n\t if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t break;\n\t }\n\t consequent.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t };\n\t Parser.prototype.parseSwitchStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('switch');\n\t this.expect('(');\n\t var discriminant = this.parseExpression();\n\t this.expect(')');\n\t var previousInSwitch = this.context.inSwitch;\n\t this.context.inSwitch = true;\n\t var cases = [];\n\t var defaultFound = false;\n\t this.expect('{');\n\t while (true) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t var clause = this.parseSwitchCase();\n\t if (clause.test === null) {\n\t if (defaultFound) {\n\t this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t }\n\t defaultFound = true;\n\t }\n\t cases.push(clause);\n\t }\n\t this.expect('}');\n\t this.context.inSwitch = previousInSwitch;\n\t return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t Parser.prototype.parseLabelledStatement = function () {\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var statement;\n\t if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t this.nextToken();\n\t var id = expr;\n\t var key = '$' + id.name;\n\t if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t }\n\t this.context.labelSet[key] = true;\n\t var body = void 0;\n\t if (this.matchKeyword('class')) {\n\t this.tolerateUnexpectedToken(this.lookahead);\n\t body = this.parseClassDeclaration();\n\t }\n\t else if (this.matchKeyword('function')) {\n\t var token = this.lookahead;\n\t var declaration = this.parseFunctionDeclaration();\n\t if (this.context.strict) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t }\n\t else if (declaration.generator) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t }\n\t body = declaration;\n\t }\n\t else {\n\t body = this.parseStatement();\n\t }\n\t delete this.context.labelSet[key];\n\t statement = new Node.LabeledStatement(id, body);\n\t }\n\t else {\n\t this.consumeSemicolon();\n\t statement = new Node.ExpressionStatement(expr);\n\t }\n\t return this.finalize(node, statement);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-throw-statement\n\t Parser.prototype.parseThrowStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('throw');\n\t if (this.hasLineTerminator) {\n\t this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t }\n\t var argument = this.parseExpression();\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ThrowStatement(argument));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-try-statement\n\t Parser.prototype.parseCatchClause = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('catch');\n\t this.expect('(');\n\t if (this.match(')')) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t var params = [];\n\t var param = this.parsePattern(params);\n\t var paramMap = {};\n\t for (var i = 0; i < params.length; i++) {\n\t var key = '$' + params[i].value;\n\t if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t }\n\t paramMap[key] = true;\n\t }\n\t if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t if (this.scanner.isRestrictedWord(param.name)) {\n\t this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t }\n\t }\n\t this.expect(')');\n\t var body = this.parseBlock();\n\t return this.finalize(node, new Node.CatchClause(param, body));\n\t };\n\t Parser.prototype.parseFinallyClause = function () {\n\t this.expectKeyword('finally');\n\t return this.parseBlock();\n\t };\n\t Parser.prototype.parseTryStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('try');\n\t var block = this.parseBlock();\n\t var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t if (!handler && !finalizer) {\n\t this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t }\n\t return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t Parser.prototype.parseDebuggerStatement = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('debugger');\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.DebuggerStatement());\n\t };\n\t // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t Parser.prototype.parseStatement = function () {\n\t var statement;\n\t switch (this.lookahead.type) {\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 8 /* StringLiteral */:\n\t case 10 /* Template */:\n\t case 9 /* RegularExpression */:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t case 7 /* Punctuator */:\n\t var value = this.lookahead.value;\n\t if (value === '{') {\n\t statement = this.parseBlock();\n\t }\n\t else if (value === '(') {\n\t statement = this.parseExpressionStatement();\n\t }\n\t else if (value === ';') {\n\t statement = this.parseEmptyStatement();\n\t }\n\t else {\n\t statement = this.parseExpressionStatement();\n\t }\n\t break;\n\t case 3 /* Identifier */:\n\t statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t break;\n\t case 4 /* Keyword */:\n\t switch (this.lookahead.value) {\n\t case 'break':\n\t statement = this.parseBreakStatement();\n\t break;\n\t case 'continue':\n\t statement = this.parseContinueStatement();\n\t break;\n\t case 'debugger':\n\t statement = this.parseDebuggerStatement();\n\t break;\n\t case 'do':\n\t statement = this.parseDoWhileStatement();\n\t break;\n\t case 'for':\n\t statement = this.parseForStatement();\n\t break;\n\t case 'function':\n\t statement = this.parseFunctionDeclaration();\n\t break;\n\t case 'if':\n\t statement = this.parseIfStatement();\n\t break;\n\t case 'return':\n\t statement = this.parseReturnStatement();\n\t break;\n\t case 'switch':\n\t statement = this.parseSwitchStatement();\n\t break;\n\t case 'throw':\n\t statement = this.parseThrowStatement();\n\t break;\n\t case 'try':\n\t statement = this.parseTryStatement();\n\t break;\n\t case 'var':\n\t statement = this.parseVariableStatement();\n\t break;\n\t case 'while':\n\t statement = this.parseWhileStatement();\n\t break;\n\t case 'with':\n\t statement = this.parseWithStatement();\n\t break;\n\t default:\n\t statement = this.parseExpressionStatement();\n\t break;\n\t }\n\t break;\n\t default:\n\t statement = this.throwUnexpectedToken(this.lookahead);\n\t }\n\t return statement;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-function-definitions\n\t Parser.prototype.parseFunctionSourceElements = function () {\n\t var node = this.createNode();\n\t this.expect('{');\n\t var body = this.parseDirectivePrologues();\n\t var previousLabelSet = this.context.labelSet;\n\t var previousInIteration = this.context.inIteration;\n\t var previousInSwitch = this.context.inSwitch;\n\t var previousInFunctionBody = this.context.inFunctionBody;\n\t this.context.labelSet = {};\n\t this.context.inIteration = false;\n\t this.context.inSwitch = false;\n\t this.context.inFunctionBody = true;\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t if (this.match('}')) {\n\t break;\n\t }\n\t body.push(this.parseStatementListItem());\n\t }\n\t this.expect('}');\n\t this.context.labelSet = previousLabelSet;\n\t this.context.inIteration = previousInIteration;\n\t this.context.inSwitch = previousInSwitch;\n\t this.context.inFunctionBody = previousInFunctionBody;\n\t return this.finalize(node, new Node.BlockStatement(body));\n\t };\n\t Parser.prototype.validateParam = function (options, param, name) {\n\t var key = '$' + name;\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t else if (!options.firstRestricted) {\n\t if (this.scanner.isRestrictedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictParamName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(name)) {\n\t options.firstRestricted = param;\n\t options.message = messages_1.Messages.StrictReservedWord;\n\t }\n\t else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t options.stricted = param;\n\t options.message = messages_1.Messages.StrictParamDupe;\n\t }\n\t }\n\t /* istanbul ignore next */\n\t if (typeof Object.defineProperty === 'function') {\n\t Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t }\n\t else {\n\t options.paramSet[key] = true;\n\t }\n\t };\n\t Parser.prototype.parseRestElement = function (params) {\n\t var node = this.createNode();\n\t this.expect('...');\n\t var arg = this.parsePattern(params);\n\t if (this.match('=')) {\n\t this.throwError(messages_1.Messages.DefaultRestParameter);\n\t }\n\t if (!this.match(')')) {\n\t this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t }\n\t return this.finalize(node, new Node.RestElement(arg));\n\t };\n\t Parser.prototype.parseFormalParameter = function (options) {\n\t var params = [];\n\t var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t for (var i = 0; i < params.length; i++) {\n\t this.validateParam(options, params[i], params[i].value);\n\t }\n\t options.simple = options.simple && (param instanceof Node.Identifier);\n\t options.params.push(param);\n\t };\n\t Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t var options;\n\t options = {\n\t simple: true,\n\t params: [],\n\t firstRestricted: firstRestricted\n\t };\n\t this.expect('(');\n\t if (!this.match(')')) {\n\t options.paramSet = {};\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t this.parseFormalParameter(options);\n\t if (this.match(')')) {\n\t break;\n\t }\n\t this.expect(',');\n\t if (this.match(')')) {\n\t break;\n\t }\n\t }\n\t }\n\t this.expect(')');\n\t return {\n\t simple: options.simple,\n\t params: options.params,\n\t stricted: options.stricted,\n\t firstRestricted: options.firstRestricted,\n\t message: options.message\n\t };\n\t };\n\t Parser.prototype.matchAsyncFunction = function () {\n\t var match = this.matchContextualKeyword('async');\n\t if (match) {\n\t var state = this.scanner.saveState();\n\t this.scanner.scanComments();\n\t var next = this.scanner.lex();\n\t this.scanner.restoreState(state);\n\t match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t }\n\t return match;\n\t };\n\t Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted = null;\n\t if (!identifierIsOptional || !this.match('(')) {\n\t var token = this.lookahead;\n\t id = this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t };\n\t Parser.prototype.parseFunctionExpression = function () {\n\t var node = this.createNode();\n\t var isAsync = this.matchContextualKeyword('async');\n\t if (isAsync) {\n\t this.nextToken();\n\t }\n\t this.expectKeyword('function');\n\t var isGenerator = isAsync ? false : this.match('*');\n\t if (isGenerator) {\n\t this.nextToken();\n\t }\n\t var message;\n\t var id = null;\n\t var firstRestricted;\n\t var previousAllowAwait = this.context.await;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.await = isAsync;\n\t this.context.allowYield = !isGenerator;\n\t if (!this.match('(')) {\n\t var token = this.lookahead;\n\t id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t if (this.context.strict) {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t }\n\t }\n\t else {\n\t if (this.scanner.isRestrictedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictFunctionName;\n\t }\n\t else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t firstRestricted = token;\n\t message = messages_1.Messages.StrictReservedWord;\n\t }\n\t }\n\t }\n\t var formalParameters = this.parseFormalParameters(firstRestricted);\n\t var params = formalParameters.params;\n\t var stricted = formalParameters.stricted;\n\t firstRestricted = formalParameters.firstRestricted;\n\t if (formalParameters.message) {\n\t message = formalParameters.message;\n\t }\n\t var previousStrict = this.context.strict;\n\t var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t this.context.allowStrictDirective = formalParameters.simple;\n\t var body = this.parseFunctionSourceElements();\n\t if (this.context.strict && firstRestricted) {\n\t this.throwUnexpectedToken(firstRestricted, message);\n\t }\n\t if (this.context.strict && stricted) {\n\t this.tolerateUnexpectedToken(stricted, message);\n\t }\n\t this.context.strict = previousStrict;\n\t this.context.allowStrictDirective = previousAllowStrictDirective;\n\t this.context.await = previousAllowAwait;\n\t this.context.allowYield = previousAllowYield;\n\t return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t Parser.prototype.parseDirective = function () {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var expr = this.parseExpression();\n\t var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t this.consumeSemicolon();\n\t return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t };\n\t Parser.prototype.parseDirectivePrologues = function () {\n\t var firstRestricted = null;\n\t var body = [];\n\t while (true) {\n\t var token = this.lookahead;\n\t if (token.type !== 8 /* StringLiteral */) {\n\t break;\n\t }\n\t var statement = this.parseDirective();\n\t body.push(statement);\n\t var directive = statement.directive;\n\t if (typeof directive !== 'string') {\n\t break;\n\t }\n\t if (directive === 'use strict') {\n\t this.context.strict = true;\n\t if (firstRestricted) {\n\t this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t }\n\t if (!this.context.allowStrictDirective) {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t }\n\t }\n\t else {\n\t if (!firstRestricted && token.octal) {\n\t firstRestricted = token;\n\t }\n\t }\n\t }\n\t return body;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-method-definitions\n\t Parser.prototype.qualifiedPropertyName = function (token) {\n\t switch (token.type) {\n\t case 3 /* Identifier */:\n\t case 8 /* StringLiteral */:\n\t case 1 /* BooleanLiteral */:\n\t case 5 /* NullLiteral */:\n\t case 6 /* NumericLiteral */:\n\t case 4 /* Keyword */:\n\t return true;\n\t case 7 /* Punctuator */:\n\t return token.value === '[';\n\t default:\n\t break;\n\t }\n\t return false;\n\t };\n\t Parser.prototype.parseGetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length > 0) {\n\t this.tolerateError(messages_1.Messages.BadGetterArity);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseSetterMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = false;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = !isGenerator;\n\t var formalParameters = this.parseFormalParameters();\n\t if (formalParameters.params.length !== 1) {\n\t this.tolerateError(messages_1.Messages.BadSetterArity);\n\t }\n\t else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t }\n\t var method = this.parsePropertyMethod(formalParameters);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t };\n\t Parser.prototype.parseGeneratorMethod = function () {\n\t var node = this.createNode();\n\t var isGenerator = true;\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = true;\n\t var params = this.parseFormalParameters();\n\t this.context.allowYield = false;\n\t var method = this.parsePropertyMethod(params);\n\t this.context.allowYield = previousAllowYield;\n\t return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t Parser.prototype.isStartOfExpression = function () {\n\t var start = true;\n\t var value = this.lookahead.value;\n\t switch (this.lookahead.type) {\n\t case 7 /* Punctuator */:\n\t start = (value === '[') || (value === '(') || (value === '{') ||\n\t (value === '+') || (value === '-') ||\n\t (value === '!') || (value === '~') ||\n\t (value === '++') || (value === '--') ||\n\t (value === '/') || (value === '/='); // regular expression literal\n\t break;\n\t case 4 /* Keyword */:\n\t start = (value === 'class') || (value === 'delete') ||\n\t (value === 'function') || (value === 'let') || (value === 'new') ||\n\t (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t (value === 'void') || (value === 'yield');\n\t break;\n\t default:\n\t break;\n\t }\n\t return start;\n\t };\n\t Parser.prototype.parseYieldExpression = function () {\n\t var node = this.createNode();\n\t this.expectKeyword('yield');\n\t var argument = null;\n\t var delegate = false;\n\t if (!this.hasLineTerminator) {\n\t var previousAllowYield = this.context.allowYield;\n\t this.context.allowYield = false;\n\t delegate = this.match('*');\n\t if (delegate) {\n\t this.nextToken();\n\t argument = this.parseAssignmentExpression();\n\t }\n\t else if (this.isStartOfExpression()) {\n\t argument = this.parseAssignmentExpression();\n\t }\n\t this.context.allowYield = previousAllowYield;\n\t }\n\t return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-class-definitions\n\t Parser.prototype.parseClassElement = function (hasConstructor) {\n\t var token = this.lookahead;\n\t var node = this.createNode();\n\t var kind = '';\n\t var key = null;\n\t var value = null;\n\t var computed = false;\n\t var method = false;\n\t var isStatic = false;\n\t var isAsync = false;\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t var id = key;\n\t if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t token = this.lookahead;\n\t isStatic = true;\n\t computed = this.match('[');\n\t if (this.match('*')) {\n\t this.nextToken();\n\t }\n\t else {\n\t key = this.parseObjectPropertyKey();\n\t }\n\t }\n\t if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t var punctuator = this.lookahead.value;\n\t if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t isAsync = true;\n\t token = this.lookahead;\n\t key = this.parseObjectPropertyKey();\n\t if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t }\n\t }\n\t }\n\t }\n\t var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t if (token.type === 3 /* Identifier */) {\n\t if (token.value === 'get' && lookaheadPropertyKey) {\n\t kind = 'get';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t this.context.allowYield = false;\n\t value = this.parseGetterMethod();\n\t }\n\t else if (token.value === 'set' && lookaheadPropertyKey) {\n\t kind = 'set';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseSetterMethod();\n\t }\n\t }\n\t else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t kind = 'init';\n\t computed = this.match('[');\n\t key = this.parseObjectPropertyKey();\n\t value = this.parseGeneratorMethod();\n\t method = true;\n\t }\n\t if (!kind && key && this.match('(')) {\n\t kind = 'init';\n\t value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t method = true;\n\t }\n\t if (!kind) {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t if (kind === 'init') {\n\t kind = 'method';\n\t }\n\t if (!computed) {\n\t if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t }\n\t if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t if (kind !== 'method' || !method || (value && value.generator)) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t }\n\t if (hasConstructor.value) {\n\t this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t }\n\t else {\n\t hasConstructor.value = true;\n\t }\n\t kind = 'constructor';\n\t }\n\t }\n\t return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t };\n\t Parser.prototype.parseClassElementList = function () {\n\t var body = [];\n\t var hasConstructor = { value: false };\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t if (this.match(';')) {\n\t this.nextToken();\n\t }\n\t else {\n\t body.push(this.parseClassElement(hasConstructor));\n\t }\n\t }\n\t this.expect('}');\n\t return body;\n\t };\n\t Parser.prototype.parseClassBody = function () {\n\t var node = this.createNode();\n\t var elementList = this.parseClassElementList();\n\t return this.finalize(node, new Node.ClassBody(elementList));\n\t };\n\t Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t };\n\t Parser.prototype.parseClassExpression = function () {\n\t var node = this.createNode();\n\t var previousStrict = this.context.strict;\n\t this.context.strict = true;\n\t this.expectKeyword('class');\n\t var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t var superClass = null;\n\t if (this.matchKeyword('extends')) {\n\t this.nextToken();\n\t superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t }\n\t var classBody = this.parseClassBody();\n\t this.context.strict = previousStrict;\n\t return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-scripts\n\t // https://tc39.github.io/ecma262/#sec-modules\n\t Parser.prototype.parseModule = function () {\n\t this.context.strict = true;\n\t this.context.isModule = true;\n\t this.scanner.isModule = true;\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Module(body));\n\t };\n\t Parser.prototype.parseScript = function () {\n\t var node = this.createNode();\n\t var body = this.parseDirectivePrologues();\n\t while (this.lookahead.type !== 2 /* EOF */) {\n\t body.push(this.parseStatementListItem());\n\t }\n\t return this.finalize(node, new Node.Script(body));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-imports\n\t Parser.prototype.parseModuleSpecifier = function () {\n\t var node = this.createNode();\n\t if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t }\n\t var token = this.nextToken();\n\t var raw = this.getTokenRaw(token);\n\t return this.finalize(node, new Node.Literal(token.value, raw));\n\t };\n\t // import {<foo as bar>} ...;\n\t Parser.prototype.parseImportSpecifier = function () {\n\t var node = this.createNode();\n\t var imported;\n\t var local;\n\t if (this.lookahead.type === 3 /* Identifier */) {\n\t imported = this.parseVariableIdentifier();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t }\n\t else {\n\t imported = this.parseIdentifierName();\n\t local = imported;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t local = this.parseVariableIdentifier();\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t }\n\t return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t };\n\t // {foo, bar as bas}\n\t Parser.prototype.parseNamedImports = function () {\n\t this.expect('{');\n\t var specifiers = [];\n\t while (!this.match('}')) {\n\t specifiers.push(this.parseImportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t return specifiers;\n\t };\n\t // import <foo> ...;\n\t Parser.prototype.parseImportDefaultSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t };\n\t // import <* as foo> ...;\n\t Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t var node = this.createNode();\n\t this.expect('*');\n\t if (!this.matchContextualKeyword('as')) {\n\t this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t }\n\t this.nextToken();\n\t var local = this.parseIdentifierName();\n\t return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t };\n\t Parser.prototype.parseImportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('import');\n\t var src;\n\t var specifiers = [];\n\t if (this.lookahead.type === 8 /* StringLiteral */) {\n\t // import 'foo';\n\t src = this.parseModuleSpecifier();\n\t }\n\t else {\n\t if (this.match('{')) {\n\t // import {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else if (this.match('*')) {\n\t // import * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t // import foo\n\t specifiers.push(this.parseImportDefaultSpecifier());\n\t if (this.match(',')) {\n\t this.nextToken();\n\t if (this.match('*')) {\n\t // import foo, * as foo\n\t specifiers.push(this.parseImportNamespaceSpecifier());\n\t }\n\t else if (this.match('{')) {\n\t // import foo, {bar}\n\t specifiers = specifiers.concat(this.parseNamedImports());\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken(this.nextToken());\n\t }\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t src = this.parseModuleSpecifier();\n\t }\n\t this.consumeSemicolon();\n\t return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t };\n\t // https://tc39.github.io/ecma262/#sec-exports\n\t Parser.prototype.parseExportSpecifier = function () {\n\t var node = this.createNode();\n\t var local = this.parseIdentifierName();\n\t var exported = local;\n\t if (this.matchContextualKeyword('as')) {\n\t this.nextToken();\n\t exported = this.parseIdentifierName();\n\t }\n\t return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t };\n\t Parser.prototype.parseExportDeclaration = function () {\n\t if (this.context.inFunctionBody) {\n\t this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t }\n\t var node = this.createNode();\n\t this.expectKeyword('export');\n\t var exportDeclaration;\n\t if (this.matchKeyword('default')) {\n\t // export default ...\n\t this.nextToken();\n\t if (this.matchKeyword('function')) {\n\t // export default function foo () {}\n\t // export default function () {}\n\t var declaration = this.parseFunctionDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchKeyword('class')) {\n\t // export default class foo {}\n\t var declaration = this.parseClassDeclaration(true);\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else if (this.matchContextualKeyword('async')) {\n\t // export default async function f () {}\n\t // export default async function () {}\n\t // export default async x => x\n\t var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t else {\n\t if (this.matchContextualKeyword('from')) {\n\t this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t }\n\t // export default {};\n\t // export default [];\n\t // export default (1 + 2);\n\t var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t }\n\t }\n\t else if (this.match('*')) {\n\t // export * from 'foo';\n\t this.nextToken();\n\t if (!this.matchContextualKeyword('from')) {\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t this.nextToken();\n\t var src = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t }\n\t else if (this.lookahead.type === 4 /* Keyword */) {\n\t // export var f = 1;\n\t var declaration = void 0;\n\t switch (this.lookahead.value) {\n\t case 'let':\n\t case 'const':\n\t declaration = this.parseLexicalDeclaration({ inFor: false });\n\t break;\n\t case 'var':\n\t case 'class':\n\t case 'function':\n\t declaration = this.parseStatementListItem();\n\t break;\n\t default:\n\t this.throwUnexpectedToken(this.lookahead);\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else if (this.matchAsyncFunction()) {\n\t var declaration = this.parseFunctionDeclaration();\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t }\n\t else {\n\t var specifiers = [];\n\t var source = null;\n\t var isExportFromIdentifier = false;\n\t this.expect('{');\n\t while (!this.match('}')) {\n\t isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t specifiers.push(this.parseExportSpecifier());\n\t if (!this.match('}')) {\n\t this.expect(',');\n\t }\n\t }\n\t this.expect('}');\n\t if (this.matchContextualKeyword('from')) {\n\t // export {default} from 'foo';\n\t // export {foo} from 'foo';\n\t this.nextToken();\n\t source = this.parseModuleSpecifier();\n\t this.consumeSemicolon();\n\t }\n\t else if (isExportFromIdentifier) {\n\t // export {default}; // missing fromClause\n\t var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t this.throwError(message, this.lookahead.value);\n\t }\n\t else {\n\t // export {foo};\n\t this.consumeSemicolon();\n\t }\n\t exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t }\n\t return exportDeclaration;\n\t };\n\t return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t /* istanbul ignore if */\n\t if (!condition) {\n\t throw new Error('ASSERT: ' + message);\n\t }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t function ErrorHandler() {\n\t this.errors = [];\n\t this.tolerant = false;\n\t }\n\t ErrorHandler.prototype.recordError = function (error) {\n\t this.errors.push(error);\n\t };\n\t ErrorHandler.prototype.tolerate = function (error) {\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t ErrorHandler.prototype.constructError = function (msg, column) {\n\t var error = new Error(msg);\n\t try {\n\t throw error;\n\t }\n\t catch (base) {\n\t /* istanbul ignore else */\n\t if (Object.create && Object.defineProperty) {\n\t error = Object.create(base);\n\t Object.defineProperty(error, 'column', { value: column });\n\t }\n\t }\n\t /* istanbul ignore next */\n\t return error;\n\t };\n\t ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t var msg = 'Line ' + line + ': ' + description;\n\t var error = this.constructError(msg, col);\n\t error.index = index;\n\t error.lineNumber = line;\n\t error.description = description;\n\t return error;\n\t };\n\t ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t throw this.createError(index, line, col, description);\n\t };\n\t ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t var error = this.createError(index, line, col, description);\n\t if (this.tolerant) {\n\t this.recordError(error);\n\t }\n\t else {\n\t throw error;\n\t }\n\t };\n\t return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t BadGetterArity: 'Getter must not have any formal parameters',\n\t BadSetterArity: 'Setter must have exactly one formal parameter',\n\t BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t ConstructorIsAsync: 'Class constructor may not be an async method',\n\t ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t DefaultRestParameter: 'Unexpected token =',\n\t DuplicateBinding: 'Duplicate binding %0',\n\t DuplicateConstructor: 'A class may only have one constructor',\n\t DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t IllegalBreak: 'Illegal break statement',\n\t IllegalContinue: 'Illegal continue statement',\n\t IllegalExportDeclaration: 'Unexpected token',\n\t IllegalImportDeclaration: 'Unexpected token',\n\t IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t IllegalReturn: 'Illegal return statement',\n\t InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t InvalidModuleSpecifier: 'Unexpected token',\n\t InvalidRegExp: 'Invalid regular expression',\n\t LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t MissingFromClause: 'Unexpected token',\n\t MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t NewlineAfterThrow: 'Illegal newline after throw',\n\t NoAsAfterImportNamespace: 'Unexpected token',\n\t NoCatchOrFinally: 'Missing catch or finally after try',\n\t ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t Redeclaration: '%0 \\'%1\\' has already been declared',\n\t StaticPrototype: 'Classes may not have static property named prototype',\n\t StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t StrictModeWith: 'Strict mode code may not include a with statement',\n\t StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t StrictReservedWord: 'Use of future reserved word in strict mode',\n\t StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t UnexpectedEOS: 'Unexpected end of input',\n\t UnexpectedIdentifier: 'Unexpected identifier',\n\t UnexpectedNumber: 'Unexpected number',\n\t UnexpectedReserved: 'Unexpected reserved word',\n\t UnexpectedString: 'Unexpected string',\n\t UnexpectedTemplate: 'Unexpected quasi %0',\n\t UnexpectedToken: 'Unexpected token %0',\n\t UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t UnknownLabel: 'Undefined label \\'%0\\'',\n\t UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t function Scanner(code, handler) {\n\t this.source = code;\n\t this.errorHandler = handler;\n\t this.trackComment = false;\n\t this.isModule = false;\n\t this.length = code.length;\n\t this.index = 0;\n\t this.lineNumber = (code.length > 0) ? 1 : 0;\n\t this.lineStart = 0;\n\t this.curlyStack = [];\n\t }\n\t Scanner.prototype.saveState = function () {\n\t return {\n\t index: this.index,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart\n\t };\n\t };\n\t Scanner.prototype.restoreState = function (state) {\n\t this.index = state.index;\n\t this.lineNumber = state.lineNumber;\n\t this.lineStart = state.lineStart;\n\t };\n\t Scanner.prototype.eof = function () {\n\t return this.index >= this.length;\n\t };\n\t Scanner.prototype.throwUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t };\n\t // https://tc39.github.io/ecma262/#sec-comments\n\t Scanner.prototype.skipSingleLineComment = function (offset) {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - offset;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - offset\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t ++this.index;\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 1\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index - 1],\n\t range: [start, this.index - 1],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t return comments;\n\t }\n\t }\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: false,\n\t slice: [start + offset, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t };\n\t Scanner.prototype.skipMultiLineComment = function () {\n\t var comments = [];\n\t var start, loc;\n\t if (this.trackComment) {\n\t comments = [];\n\t start = this.index - 2;\n\t loc = {\n\t start: {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart - 2\n\t },\n\t end: {}\n\t };\n\t }\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isLineTerminator(ch)) {\n\t if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t ++this.index;\n\t this.lineStart = this.index;\n\t }\n\t else if (ch === 0x2A) {\n\t // Block comment ends with '*/'.\n\t if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t this.index += 2;\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index - 2],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t return comments;\n\t }\n\t ++this.index;\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t }\n\t // Ran off the end of the file - the whole thing is a comment\n\t if (this.trackComment) {\n\t loc.end = {\n\t line: this.lineNumber,\n\t column: this.index - this.lineStart\n\t };\n\t var entry = {\n\t multiLine: true,\n\t slice: [start + 2, this.index],\n\t range: [start, this.index],\n\t loc: loc\n\t };\n\t comments.push(entry);\n\t }\n\t this.tolerateUnexpectedToken();\n\t return comments;\n\t };\n\t Scanner.prototype.scanComments = function () {\n\t var comments;\n\t if (this.trackComment) {\n\t comments = [];\n\t }\n\t var start = (this.index === 0);\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isWhiteSpace(ch)) {\n\t ++this.index;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch)) {\n\t ++this.index;\n\t if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t ++this.index;\n\t }\n\t ++this.lineNumber;\n\t this.lineStart = this.index;\n\t start = true;\n\t }\n\t else if (ch === 0x2F) {\n\t ch = this.source.charCodeAt(this.index + 1);\n\t if (ch === 0x2F) {\n\t this.index += 2;\n\t var comment = this.skipSingleLineComment(2);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t start = true;\n\t }\n\t else if (ch === 0x2A) {\n\t this.index += 2;\n\t var comment = this.skipMultiLineComment();\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (start && ch === 0x2D) {\n\t // U+003E is '>'\n\t if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t // '-->' is a single-line comment\n\t this.index += 3;\n\t var comment = this.skipSingleLineComment(3);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else if (ch === 0x3C && !this.isModule) {\n\t if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t this.index += 4; // `<!--`\n\t var comment = this.skipSingleLineComment(4);\n\t if (this.trackComment) {\n\t comments = comments.concat(comment);\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return comments;\n\t };\n\t // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t Scanner.prototype.isFutureReservedWord = function (id) {\n\t switch (id) {\n\t case 'enum':\n\t case 'export':\n\t case 'import':\n\t case 'super':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t switch (id) {\n\t case 'implements':\n\t case 'interface':\n\t case 'package':\n\t case 'private':\n\t case 'protected':\n\t case 'public':\n\t case 'static':\n\t case 'yield':\n\t case 'let':\n\t return true;\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.isRestrictedWord = function (id) {\n\t return id === 'eval' || id === 'arguments';\n\t };\n\t // https://tc39.github.io/ecma262/#sec-keywords\n\t Scanner.prototype.isKeyword = function (id) {\n\t switch (id.length) {\n\t case 2:\n\t return (id === 'if') || (id === 'in') || (id === 'do');\n\t case 3:\n\t return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t (id === 'try') || (id === 'let');\n\t case 4:\n\t return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t (id === 'void') || (id === 'with') || (id === 'enum');\n\t case 5:\n\t return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t (id === 'class') || (id === 'super');\n\t case 6:\n\t return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t (id === 'switch') || (id === 'export') || (id === 'import');\n\t case 7:\n\t return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t case 8:\n\t return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t case 10:\n\t return (id === 'instanceof');\n\t default:\n\t return false;\n\t }\n\t };\n\t Scanner.prototype.codePointAt = function (i) {\n\t var cp = this.source.charCodeAt(i);\n\t if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t var second = this.source.charCodeAt(i + 1);\n\t if (second >= 0xDC00 && second <= 0xDFFF) {\n\t var first = cp;\n\t cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t }\n\t }\n\t return cp;\n\t };\n\t Scanner.prototype.scanHexEscape = function (prefix) {\n\t var len = (prefix === 'u') ? 4 : 2;\n\t var code = 0;\n\t for (var i = 0; i < len; ++i) {\n\t if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 16 + hexValue(this.source[this.index++]);\n\t }\n\t else {\n\t return null;\n\t }\n\t }\n\t return String.fromCharCode(code);\n\t };\n\t Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t var ch = this.source[this.index];\n\t var code = 0;\n\t // At least, one hex digit is required.\n\t if (ch === '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t code = code * 16 + hexValue(ch);\n\t }\n\t if (code > 0x10FFFF || ch !== '}') {\n\t this.throwUnexpectedToken();\n\t }\n\t return character_1.Character.fromCodePoint(code);\n\t };\n\t Scanner.prototype.getIdentifier = function () {\n\t var start = this.index++;\n\t while (!this.eof()) {\n\t var ch = this.source.charCodeAt(this.index);\n\t if (ch === 0x5C) {\n\t // Blackslash (U+005C) marks Unicode escape sequence.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t // Need to handle surrogate pairs.\n\t this.index = start;\n\t return this.getComplexIdentifier();\n\t }\n\t if (character_1.Character.isIdentifierPart(ch)) {\n\t ++this.index;\n\t }\n\t else {\n\t break;\n\t }\n\t }\n\t return this.source.slice(start, this.index);\n\t };\n\t Scanner.prototype.getComplexIdentifier = function () {\n\t var cp = this.codePointAt(this.index);\n\t var id = character_1.Character.fromCodePoint(cp);\n\t this.index += id.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t var ch;\n\t if (cp === 0x5C) {\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id = ch;\n\t }\n\t while (!this.eof()) {\n\t cp = this.codePointAt(this.index);\n\t if (!character_1.Character.isIdentifierPart(cp)) {\n\t break;\n\t }\n\t ch = character_1.Character.fromCodePoint(cp);\n\t id += ch;\n\t this.index += ch.length;\n\t // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t if (cp === 0x5C) {\n\t id = id.substr(0, id.length - 1);\n\t if (this.source.charCodeAt(this.index) !== 0x75) {\n\t this.throwUnexpectedToken();\n\t }\n\t ++this.index;\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t ch = this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t ch = this.scanHexEscape('u');\n\t if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t id += ch;\n\t }\n\t }\n\t return id;\n\t };\n\t Scanner.prototype.octalToDecimal = function (ch) {\n\t // \\0 is not octal escape sequence\n\t var octal = (ch !== '0');\n\t var code = octalValue(ch);\n\t if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t octal = true;\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t // 3 digits are only allowed when string starts\n\t // with 0, 1, 2, 3\n\t if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t code = code * 8 + octalValue(this.source[this.index++]);\n\t }\n\t }\n\t return {\n\t code: code,\n\t octal: octal\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t Scanner.prototype.scanIdentifier = function () {\n\t var type;\n\t var start = this.index;\n\t // Backslash (U+005C) starts an escaped character.\n\t var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t // There is no keyword or literal with only one character.\n\t // Thus, it must be an identifier.\n\t if (id.length === 1) {\n\t type = 3 /* Identifier */;\n\t }\n\t else if (this.isKeyword(id)) {\n\t type = 4 /* Keyword */;\n\t }\n\t else if (id === 'null') {\n\t type = 5 /* NullLiteral */;\n\t }\n\t else if (id === 'true' || id === 'false') {\n\t type = 1 /* BooleanLiteral */;\n\t }\n\t else {\n\t type = 3 /* Identifier */;\n\t }\n\t if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t var restore = this.index;\n\t this.index = start;\n\t this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t this.index = restore;\n\t }\n\t return {\n\t type: type,\n\t value: id,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-punctuators\n\t Scanner.prototype.scanPunctuator = function () {\n\t var start = this.index;\n\t // Check for most common single-character punctuators.\n\t var str = this.source[this.index];\n\t switch (str) {\n\t case '(':\n\t case '{':\n\t if (str === '{') {\n\t this.curlyStack.push('{');\n\t }\n\t ++this.index;\n\t break;\n\t case '.':\n\t ++this.index;\n\t if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t // Spread operator: ...\n\t this.index += 2;\n\t str = '...';\n\t }\n\t break;\n\t case '}':\n\t ++this.index;\n\t this.curlyStack.pop();\n\t break;\n\t case ')':\n\t case ';':\n\t case ',':\n\t case '[':\n\t case ']':\n\t case ':':\n\t case '?':\n\t case '~':\n\t ++this.index;\n\t break;\n\t default:\n\t // 4-character punctuator.\n\t str = this.source.substr(this.index, 4);\n\t if (str === '>>>=') {\n\t this.index += 4;\n\t }\n\t else {\n\t // 3-character punctuators.\n\t str = str.substr(0, 3);\n\t if (str === '===' || str === '!==' || str === '>>>' ||\n\t str === '<<=' || str === '>>=' || str === '**=') {\n\t this.index += 3;\n\t }\n\t else {\n\t // 2-character punctuators.\n\t str = str.substr(0, 2);\n\t if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t this.index += 2;\n\t }\n\t else {\n\t // 1-character punctuators.\n\t str = this.source[this.index];\n\t if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t ++this.index;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t if (this.index === start) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 7 /* Punctuator */,\n\t value: str,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t Scanner.prototype.scanHexLiteral = function (start) {\n\t var num = '';\n\t while (!this.eof()) {\n\t if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt('0x' + num, 16),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanBinaryLiteral = function (start) {\n\t var num = '';\n\t var ch;\n\t while (!this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch !== '0' && ch !== '1') {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (num.length === 0) {\n\t // only 0b or 0B\n\t this.throwUnexpectedToken();\n\t }\n\t if (!this.eof()) {\n\t ch = this.source.charCodeAt(this.index);\n\t /* istanbul ignore else */\n\t if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 2),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t var num = '';\n\t var octal = false;\n\t if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t octal = true;\n\t num = '0' + this.source[this.index++];\n\t }\n\t else {\n\t ++this.index;\n\t }\n\t while (!this.eof()) {\n\t if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t break;\n\t }\n\t num += this.source[this.index++];\n\t }\n\t if (!octal && num.length === 0) {\n\t // only 0o or 0O\n\t this.throwUnexpectedToken();\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseInt(num, 8),\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.isImplicitOctalLiteral = function () {\n\t // Implicit octal, unless there is a non-octal digit.\n\t // (Annex B.1.1 on Numeric Literals)\n\t for (var i = this.index + 1; i < this.length; ++i) {\n\t var ch = this.source[i];\n\t if (ch === '8' || ch === '9') {\n\t return false;\n\t }\n\t if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t return true;\n\t }\n\t }\n\t return true;\n\t };\n\t Scanner.prototype.scanNumericLiteral = function () {\n\t var start = this.index;\n\t var ch = this.source[start];\n\t assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t var num = '';\n\t if (ch !== '.') {\n\t num = this.source[this.index++];\n\t ch = this.source[this.index];\n\t // Hex number starts with '0x'.\n\t // Octal number starts with '0'.\n\t // Octal number in ES6 starts with '0o'.\n\t // Binary number in ES6 starts with '0b'.\n\t if (num === '0') {\n\t if (ch === 'x' || ch === 'X') {\n\t ++this.index;\n\t return this.scanHexLiteral(start);\n\t }\n\t if (ch === 'b' || ch === 'B') {\n\t ++this.index;\n\t return this.scanBinaryLiteral(start);\n\t }\n\t if (ch === 'o' || ch === 'O') {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t if (this.isImplicitOctalLiteral()) {\n\t return this.scanOctalLiteral(ch, start);\n\t }\n\t }\n\t }\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === '.') {\n\t num += this.source[this.index++];\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t ch = this.source[this.index];\n\t }\n\t if (ch === 'e' || ch === 'E') {\n\t num += this.source[this.index++];\n\t ch = this.source[this.index];\n\t if (ch === '+' || ch === '-') {\n\t num += this.source[this.index++];\n\t }\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t num += this.source[this.index++];\n\t }\n\t }\n\t else {\n\t this.throwUnexpectedToken();\n\t }\n\t }\n\t if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 6 /* NumericLiteral */,\n\t value: parseFloat(num),\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t Scanner.prototype.scanStringLiteral = function () {\n\t var start = this.index;\n\t var quote = this.source[start];\n\t assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t ++this.index;\n\t var octal = false;\n\t var str = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === quote) {\n\t quote = '';\n\t break;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t str += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var unescaped_1 = this.scanHexEscape(ch);\n\t if (unescaped_1 === null) {\n\t this.throwUnexpectedToken();\n\t }\n\t str += unescaped_1;\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t str += unescaped;\n\t break;\n\t case 'n':\n\t str += '\\n';\n\t break;\n\t case 'r':\n\t str += '\\r';\n\t break;\n\t case 't':\n\t str += '\\t';\n\t break;\n\t case 'b':\n\t str += '\\b';\n\t break;\n\t case 'f':\n\t str += '\\f';\n\t break;\n\t case 'v':\n\t str += '\\x0B';\n\t break;\n\t case '8':\n\t case '9':\n\t str += ch;\n\t this.tolerateUnexpectedToken();\n\t break;\n\t default:\n\t if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t var octToDec = this.octalToDecimal(ch);\n\t octal = octToDec.octal || octal;\n\t str += String.fromCharCode(octToDec.code);\n\t }\n\t else {\n\t str += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t else {\n\t str += ch;\n\t }\n\t }\n\t if (quote !== '') {\n\t this.index = start;\n\t this.throwUnexpectedToken();\n\t }\n\t return {\n\t type: 8 /* StringLiteral */,\n\t value: str,\n\t octal: octal,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t Scanner.prototype.scanTemplate = function () {\n\t var cooked = '';\n\t var terminated = false;\n\t var start = this.index;\n\t var head = (this.source[start] === '`');\n\t var tail = false;\n\t var rawOffset = 2;\n\t ++this.index;\n\t while (!this.eof()) {\n\t var ch = this.source[this.index++];\n\t if (ch === '`') {\n\t rawOffset = 1;\n\t tail = true;\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '$') {\n\t if (this.source[this.index] === '{') {\n\t this.curlyStack.push('${');\n\t ++this.index;\n\t terminated = true;\n\t break;\n\t }\n\t cooked += ch;\n\t }\n\t else if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t switch (ch) {\n\t case 'n':\n\t cooked += '\\n';\n\t break;\n\t case 'r':\n\t cooked += '\\r';\n\t break;\n\t case 't':\n\t cooked += '\\t';\n\t break;\n\t case 'u':\n\t if (this.source[this.index] === '{') {\n\t ++this.index;\n\t cooked += this.scanUnicodeCodePointEscape();\n\t }\n\t else {\n\t var restore = this.index;\n\t var unescaped_2 = this.scanHexEscape(ch);\n\t if (unescaped_2 !== null) {\n\t cooked += unescaped_2;\n\t }\n\t else {\n\t this.index = restore;\n\t cooked += ch;\n\t }\n\t }\n\t break;\n\t case 'x':\n\t var unescaped = this.scanHexEscape(ch);\n\t if (unescaped === null) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t }\n\t cooked += unescaped;\n\t break;\n\t case 'b':\n\t cooked += '\\b';\n\t break;\n\t case 'f':\n\t cooked += '\\f';\n\t break;\n\t case 'v':\n\t cooked += '\\v';\n\t break;\n\t default:\n\t if (ch === '0') {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t // Illegal: \\01 \\02 and so on\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t cooked += '\\0';\n\t }\n\t else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t // Illegal: \\1 \\2\n\t this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t break;\n\t }\n\t }\n\t else {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t }\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t ++this.lineNumber;\n\t if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t ++this.index;\n\t }\n\t this.lineStart = this.index;\n\t cooked += '\\n';\n\t }\n\t else {\n\t cooked += ch;\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken();\n\t }\n\t if (!head) {\n\t this.curlyStack.pop();\n\t }\n\t return {\n\t type: 10 /* Template */,\n\t value: this.source.slice(start + 1, this.index - rawOffset),\n\t cooked: cooked,\n\t head: head,\n\t tail: tail,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t Scanner.prototype.testRegExp = function (pattern, flags) {\n\t // The BMP character to use as a replacement for astral symbols when\n\t // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t // approximation.\n\t // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t // pattern that would not be detected by this substitution.\n\t var astralSubstitute = '\\uFFFF';\n\t var tmp = pattern;\n\t var self = this;\n\t if (flags.indexOf('u') >= 0) {\n\t tmp = tmp\n\t .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t var codePoint = parseInt($1 || $2, 16);\n\t if (codePoint > 0x10FFFF) {\n\t self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t if (codePoint <= 0xFFFF) {\n\t return String.fromCharCode(codePoint);\n\t }\n\t return astralSubstitute;\n\t })\n\t .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t }\n\t // First, detect invalid regular expressions.\n\t try {\n\t RegExp(tmp);\n\t }\n\t catch (e) {\n\t this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t }\n\t // Return a regular expression object for this pattern-flag pair, or\n\t // `null` in case the current environment doesn't support the flags it\n\t // uses.\n\t try {\n\t return new RegExp(pattern, flags);\n\t }\n\t catch (exception) {\n\t /* istanbul ignore next */\n\t return null;\n\t }\n\t };\n\t Scanner.prototype.scanRegExpBody = function () {\n\t var ch = this.source[this.index];\n\t assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t var str = this.source[this.index++];\n\t var classMarker = false;\n\t var terminated = false;\n\t while (!this.eof()) {\n\t ch = this.source[this.index++];\n\t str += ch;\n\t if (ch === '\\\\') {\n\t ch = this.source[this.index++];\n\t // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t str += ch;\n\t }\n\t else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t else if (classMarker) {\n\t if (ch === ']') {\n\t classMarker = false;\n\t }\n\t }\n\t else {\n\t if (ch === '/') {\n\t terminated = true;\n\t break;\n\t }\n\t else if (ch === '[') {\n\t classMarker = true;\n\t }\n\t }\n\t }\n\t if (!terminated) {\n\t this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t }\n\t // Exclude leading and trailing slash.\n\t return str.substr(1, str.length - 2);\n\t };\n\t Scanner.prototype.scanRegExpFlags = function () {\n\t var str = '';\n\t var flags = '';\n\t while (!this.eof()) {\n\t var ch = this.source[this.index];\n\t if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t break;\n\t }\n\t ++this.index;\n\t if (ch === '\\\\' && !this.eof()) {\n\t ch = this.source[this.index];\n\t if (ch === 'u') {\n\t ++this.index;\n\t var restore = this.index;\n\t var char = this.scanHexEscape('u');\n\t if (char !== null) {\n\t flags += char;\n\t for (str += '\\\\u'; restore < this.index; ++restore) {\n\t str += this.source[restore];\n\t }\n\t }\n\t else {\n\t this.index = restore;\n\t flags += 'u';\n\t str += '\\\\u';\n\t }\n\t this.tolerateUnexpectedToken();\n\t }\n\t else {\n\t str += '\\\\';\n\t this.tolerateUnexpectedToken();\n\t }\n\t }\n\t else {\n\t flags += ch;\n\t str += ch;\n\t }\n\t }\n\t return flags;\n\t };\n\t Scanner.prototype.scanRegExp = function () {\n\t var start = this.index;\n\t var pattern = this.scanRegExpBody();\n\t var flags = this.scanRegExpFlags();\n\t var value = this.testRegExp(pattern, flags);\n\t return {\n\t type: 9 /* RegularExpression */,\n\t value: '',\n\t pattern: pattern,\n\t flags: flags,\n\t regex: value,\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: start,\n\t end: this.index\n\t };\n\t };\n\t Scanner.prototype.lex = function () {\n\t if (this.eof()) {\n\t return {\n\t type: 2 /* EOF */,\n\t value: '',\n\t lineNumber: this.lineNumber,\n\t lineStart: this.lineStart,\n\t start: this.index,\n\t end: this.index\n\t };\n\t }\n\t var cp = this.source.charCodeAt(this.index);\n\t if (character_1.Character.isIdentifierStart(cp)) {\n\t return this.scanIdentifier();\n\t }\n\t // Very common: ( and ) and ;\n\t if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t return this.scanPunctuator();\n\t }\n\t // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t if (cp === 0x27 || cp === 0x22) {\n\t return this.scanStringLiteral();\n\t }\n\t // Dot (.) U+002E can also start a floating-point number, hence the need\n\t // to check the next character.\n\t if (cp === 0x2E) {\n\t if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t return this.scanNumericLiteral();\n\t }\n\t return this.scanPunctuator();\n\t }\n\t if (character_1.Character.isDecimalDigit(cp)) {\n\t return this.scanNumericLiteral();\n\t }\n\t // Template literals start with ` (U+0060) for template head\n\t // or } (U+007D) for template middle or template tail.\n\t if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t return this.scanTemplate();\n\t }\n\t // Possible identifier start in a surrogate pair.\n\t if (cp >= 0xD800 && cp < 0xDFFF) {\n\t if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t return this.scanIdentifier();\n\t }\n\t }\n\t return this.scanPunctuator();\n\t };\n\t return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t quot: '\\u0022',\n\t amp: '\\u0026',\n\t apos: '\\u0027',\n\t gt: '\\u003E',\n\t nbsp: '\\u00A0',\n\t iexcl: '\\u00A1',\n\t cent: '\\u00A2',\n\t pound: '\\u00A3',\n\t curren: '\\u00A4',\n\t yen: '\\u00A5',\n\t brvbar: '\\u00A6',\n\t sect: '\\u00A7',\n\t uml: '\\u00A8',\n\t copy: '\\u00A9',\n\t ordf: '\\u00AA',\n\t laquo: '\\u00AB',\n\t not: '\\u00AC',\n\t shy: '\\u00AD',\n\t reg: '\\u00AE',\n\t macr: '\\u00AF',\n\t deg: '\\u00B0',\n\t plusmn: '\\u00B1',\n\t sup2: '\\u00B2',\n\t sup3: '\\u00B3',\n\t acute: '\\u00B4',\n\t micro: '\\u00B5',\n\t para: '\\u00B6',\n\t middot: '\\u00B7',\n\t cedil: '\\u00B8',\n\t sup1: '\\u00B9',\n\t ordm: '\\u00BA',\n\t raquo: '\\u00BB',\n\t frac14: '\\u00BC',\n\t frac12: '\\u00BD',\n\t frac34: '\\u00BE',\n\t iquest: '\\u00BF',\n\t Agrave: '\\u00C0',\n\t Aacute: '\\u00C1',\n\t Acirc: '\\u00C2',\n\t Atilde: '\\u00C3',\n\t Auml: '\\u00C4',\n\t Aring: '\\u00C5',\n\t AElig: '\\u00C6',\n\t Ccedil: '\\u00C7',\n\t Egrave: '\\u00C8',\n\t Eacute: '\\u00C9',\n\t Ecirc: '\\u00CA',\n\t Euml: '\\u00CB',\n\t Igrave: '\\u00CC',\n\t Iacute: '\\u00CD',\n\t Icirc: '\\u00CE',\n\t Iuml: '\\u00CF',\n\t ETH: '\\u00D0',\n\t Ntilde: '\\u00D1',\n\t Ograve: '\\u00D2',\n\t Oacute: '\\u00D3',\n\t Ocirc: '\\u00D4',\n\t Otilde: '\\u00D5',\n\t Ouml: '\\u00D6',\n\t times: '\\u00D7',\n\t Oslash: '\\u00D8',\n\t Ugrave: '\\u00D9',\n\t Uacute: '\\u00DA',\n\t Ucirc: '\\u00DB',\n\t Uuml: '\\u00DC',\n\t Yacute: '\\u00DD',\n\t THORN: '\\u00DE',\n\t szlig: '\\u00DF',\n\t agrave: '\\u00E0',\n\t aacute: '\\u00E1',\n\t acirc: '\\u00E2',\n\t atilde: '\\u00E3',\n\t auml: '\\u00E4',\n\t aring: '\\u00E5',\n\t aelig: '\\u00E6',\n\t ccedil: '\\u00E7',\n\t egrave: '\\u00E8',\n\t eacute: '\\u00E9',\n\t ecirc: '\\u00EA',\n\t euml: '\\u00EB',\n\t igrave: '\\u00EC',\n\t iacute: '\\u00ED',\n\t icirc: '\\u00EE',\n\t iuml: '\\u00EF',\n\t eth: '\\u00F0',\n\t ntilde: '\\u00F1',\n\t ograve: '\\u00F2',\n\t oacute: '\\u00F3',\n\t ocirc: '\\u00F4',\n\t otilde: '\\u00F5',\n\t ouml: '\\u00F6',\n\t divide: '\\u00F7',\n\t oslash: '\\u00F8',\n\t ugrave: '\\u00F9',\n\t uacute: '\\u00FA',\n\t ucirc: '\\u00FB',\n\t uuml: '\\u00FC',\n\t yacute: '\\u00FD',\n\t thorn: '\\u00FE',\n\t yuml: '\\u00FF',\n\t OElig: '\\u0152',\n\t oelig: '\\u0153',\n\t Scaron: '\\u0160',\n\t scaron: '\\u0161',\n\t Yuml: '\\u0178',\n\t fnof: '\\u0192',\n\t circ: '\\u02C6',\n\t tilde: '\\u02DC',\n\t Alpha: '\\u0391',\n\t Beta: '\\u0392',\n\t Gamma: '\\u0393',\n\t Delta: '\\u0394',\n\t Epsilon: '\\u0395',\n\t Zeta: '\\u0396',\n\t Eta: '\\u0397',\n\t Theta: '\\u0398',\n\t Iota: '\\u0399',\n\t Kappa: '\\u039A',\n\t Lambda: '\\u039B',\n\t Mu: '\\u039C',\n\t Nu: '\\u039D',\n\t Xi: '\\u039E',\n\t Omicron: '\\u039F',\n\t Pi: '\\u03A0',\n\t Rho: '\\u03A1',\n\t Sigma: '\\u03A3',\n\t Tau: '\\u03A4',\n\t Upsilon: '\\u03A5',\n\t Phi: '\\u03A6',\n\t Chi: '\\u03A7',\n\t Psi: '\\u03A8',\n\t Omega: '\\u03A9',\n\t alpha: '\\u03B1',\n\t beta: '\\u03B2',\n\t gamma: '\\u03B3',\n\t delta: '\\u03B4',\n\t epsilon: '\\u03B5',\n\t zeta: '\\u03B6',\n\t eta: '\\u03B7',\n\t theta: '\\u03B8',\n\t iota: '\\u03B9',\n\t kappa: '\\u03BA',\n\t lambda: '\\u03BB',\n\t mu: '\\u03BC',\n\t nu: '\\u03BD',\n\t xi: '\\u03BE',\n\t omicron: '\\u03BF',\n\t pi: '\\u03C0',\n\t rho: '\\u03C1',\n\t sigmaf: '\\u03C2',\n\t sigma: '\\u03C3',\n\t tau: '\\u03C4',\n\t upsilon: '\\u03C5',\n\t phi: '\\u03C6',\n\t chi: '\\u03C7',\n\t psi: '\\u03C8',\n\t omega: '\\u03C9',\n\t thetasym: '\\u03D1',\n\t upsih: '\\u03D2',\n\t piv: '\\u03D6',\n\t ensp: '\\u2002',\n\t emsp: '\\u2003',\n\t thinsp: '\\u2009',\n\t zwnj: '\\u200C',\n\t zwj: '\\u200D',\n\t lrm: '\\u200E',\n\t rlm: '\\u200F',\n\t ndash: '\\u2013',\n\t mdash: '\\u2014',\n\t lsquo: '\\u2018',\n\t rsquo: '\\u2019',\n\t sbquo: '\\u201A',\n\t ldquo: '\\u201C',\n\t rdquo: '\\u201D',\n\t bdquo: '\\u201E',\n\t dagger: '\\u2020',\n\t Dagger: '\\u2021',\n\t bull: '\\u2022',\n\t hellip: '\\u2026',\n\t permil: '\\u2030',\n\t prime: '\\u2032',\n\t Prime: '\\u2033',\n\t lsaquo: '\\u2039',\n\t rsaquo: '\\u203A',\n\t oline: '\\u203E',\n\t frasl: '\\u2044',\n\t euro: '\\u20AC',\n\t image: '\\u2111',\n\t weierp: '\\u2118',\n\t real: '\\u211C',\n\t trade: '\\u2122',\n\t alefsym: '\\u2135',\n\t larr: '\\u2190',\n\t uarr: '\\u2191',\n\t rarr: '\\u2192',\n\t darr: '\\u2193',\n\t harr: '\\u2194',\n\t crarr: '\\u21B5',\n\t lArr: '\\u21D0',\n\t uArr: '\\u21D1',\n\t rArr: '\\u21D2',\n\t dArr: '\\u21D3',\n\t hArr: '\\u21D4',\n\t forall: '\\u2200',\n\t part: '\\u2202',\n\t exist: '\\u2203',\n\t empty: '\\u2205',\n\t nabla: '\\u2207',\n\t isin: '\\u2208',\n\t notin: '\\u2209',\n\t ni: '\\u220B',\n\t prod: '\\u220F',\n\t sum: '\\u2211',\n\t minus: '\\u2212',\n\t lowast: '\\u2217',\n\t radic: '\\u221A',\n\t prop: '\\u221D',\n\t infin: '\\u221E',\n\t ang: '\\u2220',\n\t and: '\\u2227',\n\t or: '\\u2228',\n\t cap: '\\u2229',\n\t cup: '\\u222A',\n\t int: '\\u222B',\n\t there4: '\\u2234',\n\t sim: '\\u223C',\n\t cong: '\\u2245',\n\t asymp: '\\u2248',\n\t ne: '\\u2260',\n\t equiv: '\\u2261',\n\t le: '\\u2264',\n\t ge: '\\u2265',\n\t sub: '\\u2282',\n\t sup: '\\u2283',\n\t nsub: '\\u2284',\n\t sube: '\\u2286',\n\t supe: '\\u2287',\n\t oplus: '\\u2295',\n\t otimes: '\\u2297',\n\t perp: '\\u22A5',\n\t sdot: '\\u22C5',\n\t lceil: '\\u2308',\n\t rceil: '\\u2309',\n\t lfloor: '\\u230A',\n\t rfloor: '\\u230B',\n\t loz: '\\u25CA',\n\t spades: '\\u2660',\n\t clubs: '\\u2663',\n\t hearts: '\\u2665',\n\t diams: '\\u2666',\n\t lang: '\\u27E8',\n\t rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t function Reader() {\n\t this.values = [];\n\t this.curly = this.paren = -1;\n\t }\n\t // A function following one of those tokens is an expression.\n\t Reader.prototype.beforeFunctionExpression = function (t) {\n\t return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t 'return', 'case', 'delete', 'throw', 'void',\n\t // assignment operators\n\t '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t '&=', '|=', '^=', ',',\n\t // binary/unary operators\n\t '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t };\n\t // Determine if forward slash (/) is an operator or part of a regular expression\n\t // https://github.com/mozilla/sweet.js/wiki/design\n\t Reader.prototype.isRegexStart = function () {\n\t var previous = this.values[this.values.length - 1];\n\t var regex = (previous !== null);\n\t switch (previous) {\n\t case 'this':\n\t case ']':\n\t regex = false;\n\t break;\n\t case ')':\n\t var keyword = this.values[this.paren - 1];\n\t regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t break;\n\t case '}':\n\t // Dividing a function by anything makes little sense,\n\t // but we have to check for that.\n\t regex = false;\n\t if (this.values[this.curly - 3] === 'function') {\n\t // Anonymous function, e.g. function(){} /42\n\t var check = this.values[this.curly - 4];\n\t regex = check ? !this.beforeFunctionExpression(check) : false;\n\t }\n\t else if (this.values[this.curly - 4] === 'function') {\n\t // Named function, e.g. function f(){} /42/\n\t var check = this.values[this.curly - 5];\n\t regex = check ? !this.beforeFunctionExpression(check) : true;\n\t }\n\t break;\n\t default:\n\t break;\n\t }\n\t return regex;\n\t };\n\t Reader.prototype.push = function (token) {\n\t if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t if (token.value === '{') {\n\t this.curly = this.values.length;\n\t }\n\t else if (token.value === '(') {\n\t this.paren = this.values.length;\n\t }\n\t this.values.push(token.value);\n\t }\n\t else {\n\t this.values.push(null);\n\t }\n\t };\n\t return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t function Tokenizer(code, config) {\n\t this.errorHandler = new error_handler_1.ErrorHandler();\n\t this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t this.buffer = [];\n\t this.reader = new Reader();\n\t }\n\t Tokenizer.prototype.errors = function () {\n\t return this.errorHandler.errors;\n\t };\n\t Tokenizer.prototype.getNextToken = function () {\n\t if (this.buffer.length === 0) {\n\t var comments = this.scanner.scanComments();\n\t if (this.scanner.trackComment) {\n\t for (var i = 0; i < comments.length; ++i) {\n\t var e = comments[i];\n\t var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t var comment = {\n\t type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t value: value\n\t };\n\t if (this.trackRange) {\n\t comment.range = e.range;\n\t }\n\t if (this.trackLoc) {\n\t comment.loc = e.loc;\n\t }\n\t this.buffer.push(comment);\n\t }\n\t }\n\t if (!this.scanner.eof()) {\n\t var loc = void 0;\n\t if (this.trackLoc) {\n\t loc = {\n\t start: {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t },\n\t end: {}\n\t };\n\t }\n\t var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t this.reader.push(token);\n\t var entry = {\n\t type: token_1.TokenName[token.type],\n\t value: this.scanner.source.slice(token.start, token.end)\n\t };\n\t if (this.trackRange) {\n\t entry.range = [token.start, token.end];\n\t }\n\t if (this.trackLoc) {\n\t loc.end = {\n\t line: this.scanner.lineNumber,\n\t column: this.scanner.index - this.scanner.lineStart\n\t };\n\t entry.loc = loc;\n\t }\n\t if (token.type === 9 /* RegularExpression */) {\n\t var pattern = token.pattern;\n\t var flags = token.flags;\n\t entry.regex = { pattern: pattern, flags: flags };\n\t }\n\t this.buffer.push(entry);\n\t }\n\t }\n\t return this.buffer.shift();\n\t };\n\t return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;",
6
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\n// This module is suitable for passing as options.parser when calling\n// recast.parse to process ECMAScript code with Esprima:\n//\n// const ast = recast.parse(source, {\n// parser: require(\"recast/parsers/esprima\")\n// });\n//\nvar util_1 = require(\"../lib/util\");\nfunction parse(source, options) {\n var comments = [];\n var ast = require(\"esprima\").parse(source, {\n loc: true,\n locations: true,\n comment: true,\n onComment: comments,\n range: (0, util_1.getOption)(options, \"range\", false),\n tolerant: (0, util_1.getOption)(options, \"tolerant\", true),\n tokens: true,\n jsx: (0, util_1.getOption)(options, \"jsx\", false),\n sourceType: (0, util_1.getOption)(options, \"sourceType\", \"module\"),\n });\n if (!Array.isArray(ast.comments)) {\n ast.comments = comments;\n }\n return ast;\n}\nexports.parse = parse;\n",
7
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalize = void 0;\nvar util_1 = require(\"./util\");\nvar defaults = {\n parser: require(\"../parsers/esprima\"),\n tabWidth: 4,\n useTabs: false,\n reuseWhitespace: true,\n lineTerminator: (0, util_1.getLineTerminator)(),\n wrapColumn: 74,\n sourceFileName: null,\n sourceMapName: null,\n sourceRoot: null,\n inputSourceMap: null,\n range: false,\n tolerant: true,\n quote: null,\n trailingComma: false,\n arrayBracketSpacing: false,\n objectCurlySpacing: true,\n arrowParensAlways: false,\n flowObjectCommas: true,\n tokens: true,\n};\nvar hasOwn = defaults.hasOwnProperty;\n// Copy options and fill in default values.\nfunction normalize(opts) {\n var options = opts || defaults;\n function get(key) {\n return hasOwn.call(options, key) ? options[key] : defaults[key];\n }\n return {\n tabWidth: +get(\"tabWidth\"),\n useTabs: !!get(\"useTabs\"),\n reuseWhitespace: !!get(\"reuseWhitespace\"),\n lineTerminator: get(\"lineTerminator\"),\n wrapColumn: Math.max(get(\"wrapColumn\"), 0),\n sourceFileName: get(\"sourceFileName\"),\n sourceMapName: get(\"sourceMapName\"),\n sourceRoot: get(\"sourceRoot\"),\n inputSourceMap: get(\"inputSourceMap\"),\n parser: get(\"esprima\") || get(\"parser\"),\n range: get(\"range\"),\n tolerant: get(\"tolerant\"),\n quote: get(\"quote\"),\n trailingComma: get(\"trailingComma\"),\n arrayBracketSpacing: get(\"arrayBracketSpacing\"),\n objectCurlySpacing: get(\"objectCurlySpacing\"),\n arrowParensAlways: get(\"arrowParensAlways\"),\n flowObjectCommas: get(\"flowObjectCommas\"),\n tokens: !!get(\"tokens\"),\n };\n}\nexports.normalize = normalize;\n",
8
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar util_1 = require(\"./util\");\nvar Mapping = /** @class */ (function () {\n function Mapping(sourceLines, sourceLoc, targetLoc) {\n if (targetLoc === void 0) { targetLoc = sourceLoc; }\n this.sourceLines = sourceLines;\n this.sourceLoc = sourceLoc;\n this.targetLoc = targetLoc;\n }\n Mapping.prototype.slice = function (lines, start, end) {\n if (end === void 0) { end = lines.lastPos(); }\n var sourceLines = this.sourceLines;\n var sourceLoc = this.sourceLoc;\n var targetLoc = this.targetLoc;\n function skip(name) {\n var sourceFromPos = sourceLoc[name];\n var targetFromPos = targetLoc[name];\n var targetToPos = start;\n if (name === \"end\") {\n targetToPos = end;\n }\n else {\n (0, tiny_invariant_1.default)(name === \"start\");\n }\n return skipChars(sourceLines, sourceFromPos, lines, targetFromPos, targetToPos);\n }\n if ((0, util_1.comparePos)(start, targetLoc.start) <= 0) {\n if ((0, util_1.comparePos)(targetLoc.end, end) <= 0) {\n targetLoc = {\n start: subtractPos(targetLoc.start, start.line, start.column),\n end: subtractPos(targetLoc.end, start.line, start.column),\n };\n // The sourceLoc can stay the same because the contents of the\n // targetLoc have not changed.\n }\n else if ((0, util_1.comparePos)(end, targetLoc.start) <= 0) {\n return null;\n }\n else {\n sourceLoc = {\n start: sourceLoc.start,\n end: skip(\"end\"),\n };\n targetLoc = {\n start: subtractPos(targetLoc.start, start.line, start.column),\n end: subtractPos(end, start.line, start.column),\n };\n }\n }\n else {\n if ((0, util_1.comparePos)(targetLoc.end, start) <= 0) {\n return null;\n }\n if ((0, util_1.comparePos)(targetLoc.end, end) <= 0) {\n sourceLoc = {\n start: skip(\"start\"),\n end: sourceLoc.end,\n };\n targetLoc = {\n // Same as subtractPos(start, start.line, start.column):\n start: { line: 1, column: 0 },\n end: subtractPos(targetLoc.end, start.line, start.column),\n };\n }\n else {\n sourceLoc = {\n start: skip(\"start\"),\n end: skip(\"end\"),\n };\n targetLoc = {\n // Same as subtractPos(start, start.line, start.column):\n start: { line: 1, column: 0 },\n end: subtractPos(end, start.line, start.column),\n };\n }\n }\n return new Mapping(this.sourceLines, sourceLoc, targetLoc);\n };\n Mapping.prototype.add = function (line, column) {\n return new Mapping(this.sourceLines, this.sourceLoc, {\n start: addPos(this.targetLoc.start, line, column),\n end: addPos(this.targetLoc.end, line, column),\n });\n };\n Mapping.prototype.subtract = function (line, column) {\n return new Mapping(this.sourceLines, this.sourceLoc, {\n start: subtractPos(this.targetLoc.start, line, column),\n end: subtractPos(this.targetLoc.end, line, column),\n });\n };\n Mapping.prototype.indent = function (by, skipFirstLine, noNegativeColumns) {\n if (skipFirstLine === void 0) { skipFirstLine = false; }\n if (noNegativeColumns === void 0) { noNegativeColumns = false; }\n if (by === 0) {\n return this;\n }\n var targetLoc = this.targetLoc;\n var startLine = targetLoc.start.line;\n var endLine = targetLoc.end.line;\n if (skipFirstLine && startLine === 1 && endLine === 1) {\n return this;\n }\n targetLoc = {\n start: targetLoc.start,\n end: targetLoc.end,\n };\n if (!skipFirstLine || startLine > 1) {\n var startColumn = targetLoc.start.column + by;\n targetLoc.start = {\n line: startLine,\n column: noNegativeColumns ? Math.max(0, startColumn) : startColumn,\n };\n }\n if (!skipFirstLine || endLine > 1) {\n var endColumn = targetLoc.end.column + by;\n targetLoc.end = {\n line: endLine,\n column: noNegativeColumns ? Math.max(0, endColumn) : endColumn,\n };\n }\n return new Mapping(this.sourceLines, this.sourceLoc, targetLoc);\n };\n return Mapping;\n}());\nexports.default = Mapping;\nfunction addPos(toPos, line, column) {\n return {\n line: toPos.line + line - 1,\n column: toPos.line === 1 ? toPos.column + column : toPos.column,\n };\n}\nfunction subtractPos(fromPos, line, column) {\n return {\n line: fromPos.line - line + 1,\n column: fromPos.line === line ? fromPos.column - column : fromPos.column,\n };\n}\nfunction skipChars(sourceLines, sourceFromPos, targetLines, targetFromPos, targetToPos) {\n var targetComparison = (0, util_1.comparePos)(targetFromPos, targetToPos);\n if (targetComparison === 0) {\n // Trivial case: no characters to skip.\n return sourceFromPos;\n }\n var sourceCursor, targetCursor;\n if (targetComparison < 0) {\n // Skipping forward.\n sourceCursor =\n sourceLines.skipSpaces(sourceFromPos) || sourceLines.lastPos();\n targetCursor =\n targetLines.skipSpaces(targetFromPos) || targetLines.lastPos();\n var lineDiff = targetToPos.line - targetCursor.line;\n sourceCursor.line += lineDiff;\n targetCursor.line += lineDiff;\n if (lineDiff > 0) {\n // If jumping to later lines, reset columns to the beginnings\n // of those lines.\n sourceCursor.column = 0;\n targetCursor.column = 0;\n }\n else {\n (0, tiny_invariant_1.default)(lineDiff === 0);\n }\n while ((0, util_1.comparePos)(targetCursor, targetToPos) < 0 &&\n targetLines.nextPos(targetCursor, true)) {\n (0, tiny_invariant_1.default)(sourceLines.nextPos(sourceCursor, true));\n (0, tiny_invariant_1.default)(sourceLines.charAt(sourceCursor) === targetLines.charAt(targetCursor));\n }\n }\n else {\n // Skipping backward.\n sourceCursor =\n sourceLines.skipSpaces(sourceFromPos, true) || sourceLines.firstPos();\n targetCursor =\n targetLines.skipSpaces(targetFromPos, true) || targetLines.firstPos();\n var lineDiff = targetToPos.line - targetCursor.line;\n sourceCursor.line += lineDiff;\n targetCursor.line += lineDiff;\n if (lineDiff < 0) {\n // If jumping to earlier lines, reset columns to the ends of\n // those lines.\n sourceCursor.column = sourceLines.getLineLength(sourceCursor.line);\n targetCursor.column = targetLines.getLineLength(targetCursor.line);\n }\n else {\n (0, tiny_invariant_1.default)(lineDiff === 0);\n }\n while ((0, util_1.comparePos)(targetToPos, targetCursor) < 0 &&\n targetLines.prevPos(targetCursor, true)) {\n (0, tiny_invariant_1.default)(sourceLines.prevPos(sourceCursor, true));\n (0, tiny_invariant_1.default)(sourceLines.charAt(sourceCursor) === targetLines.charAt(targetCursor));\n }\n }\n return sourceCursor;\n}\n",
9
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = exports.fromString = exports.countSpaces = exports.Lines = void 0;\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar source_map_1 = tslib_1.__importDefault(require(\"source-map\"));\nvar options_1 = require(\"./options\");\nvar util_1 = require(\"./util\");\nvar mapping_1 = tslib_1.__importDefault(require(\"./mapping\"));\nvar Lines = /** @class */ (function () {\n function Lines(infos, sourceFileName) {\n if (sourceFileName === void 0) { sourceFileName = null; }\n this.infos = infos;\n this.mappings = [];\n this.cachedSourceMap = null;\n this.cachedTabWidth = void 0;\n (0, tiny_invariant_1.default)(infos.length > 0);\n this.length = infos.length;\n this.name = sourceFileName || null;\n if (this.name) {\n this.mappings.push(new mapping_1.default(this, {\n start: this.firstPos(),\n end: this.lastPos(),\n }));\n }\n }\n Lines.prototype.toString = function (options) {\n return this.sliceString(this.firstPos(), this.lastPos(), options);\n };\n Lines.prototype.getSourceMap = function (sourceMapName, sourceRoot) {\n if (!sourceMapName) {\n // Although we could make up a name or generate an anonymous\n // source map, instead we assume that any consumer who does not\n // provide a name does not actually want a source map.\n return null;\n }\n var targetLines = this;\n function updateJSON(json) {\n json = json || {};\n json.file = sourceMapName;\n if (sourceRoot) {\n json.sourceRoot = sourceRoot;\n }\n return json;\n }\n if (targetLines.cachedSourceMap) {\n // Since Lines objects are immutable, we can reuse any source map\n // that was previously generated. Nevertheless, we return a new\n // JSON object here to protect the cached source map from outside\n // modification.\n return updateJSON(targetLines.cachedSourceMap.toJSON());\n }\n var smg = new source_map_1.default.SourceMapGenerator(updateJSON());\n var sourcesToContents = {};\n targetLines.mappings.forEach(function (mapping) {\n var sourceCursor = mapping.sourceLines.skipSpaces(mapping.sourceLoc.start) ||\n mapping.sourceLines.lastPos();\n var targetCursor = targetLines.skipSpaces(mapping.targetLoc.start) ||\n targetLines.lastPos();\n while ((0, util_1.comparePos)(sourceCursor, mapping.sourceLoc.end) < 0 &&\n (0, util_1.comparePos)(targetCursor, mapping.targetLoc.end) < 0) {\n var sourceChar = mapping.sourceLines.charAt(sourceCursor);\n var targetChar = targetLines.charAt(targetCursor);\n (0, tiny_invariant_1.default)(sourceChar === targetChar);\n var sourceName = mapping.sourceLines.name;\n // Add mappings one character at a time for maximum resolution.\n smg.addMapping({\n source: sourceName,\n original: { line: sourceCursor.line, column: sourceCursor.column },\n generated: { line: targetCursor.line, column: targetCursor.column },\n });\n if (!hasOwn.call(sourcesToContents, sourceName)) {\n var sourceContent = mapping.sourceLines.toString();\n smg.setSourceContent(sourceName, sourceContent);\n sourcesToContents[sourceName] = sourceContent;\n }\n targetLines.nextPos(targetCursor, true);\n mapping.sourceLines.nextPos(sourceCursor, true);\n }\n });\n targetLines.cachedSourceMap = smg;\n return smg.toJSON();\n };\n Lines.prototype.bootstrapCharAt = function (pos) {\n (0, tiny_invariant_1.default)(typeof pos === \"object\");\n (0, tiny_invariant_1.default)(typeof pos.line === \"number\");\n (0, tiny_invariant_1.default)(typeof pos.column === \"number\");\n var line = pos.line, column = pos.column, strings = this.toString().split(lineTerminatorSeqExp), string = strings[line - 1];\n if (typeof string === \"undefined\")\n return \"\";\n if (column === string.length && line < strings.length)\n return \"\\n\";\n if (column >= string.length)\n return \"\";\n return string.charAt(column);\n };\n Lines.prototype.charAt = function (pos) {\n (0, tiny_invariant_1.default)(typeof pos === \"object\");\n (0, tiny_invariant_1.default)(typeof pos.line === \"number\");\n (0, tiny_invariant_1.default)(typeof pos.column === \"number\");\n var line = pos.line, column = pos.column, secret = this, infos = secret.infos, info = infos[line - 1], c = column;\n if (typeof info === \"undefined\" || c < 0)\n return \"\";\n var indent = this.getIndentAt(line);\n if (c < indent)\n return \" \";\n c += info.sliceStart - indent;\n if (c === info.sliceEnd && line < this.length)\n return \"\\n\";\n if (c >= info.sliceEnd)\n return \"\";\n return info.line.charAt(c);\n };\n Lines.prototype.stripMargin = function (width, skipFirstLine) {\n if (width === 0)\n return this;\n (0, tiny_invariant_1.default)(width > 0, \"negative margin: \" + width);\n if (skipFirstLine && this.length === 1)\n return this;\n var lines = new Lines(this.infos.map(function (info, i) {\n if (info.line && (i > 0 || !skipFirstLine)) {\n info = tslib_1.__assign(tslib_1.__assign({}, info), { indent: Math.max(0, info.indent - width) });\n }\n return info;\n }));\n if (this.mappings.length > 0) {\n var newMappings_1 = lines.mappings;\n (0, tiny_invariant_1.default)(newMappings_1.length === 0);\n this.mappings.forEach(function (mapping) {\n newMappings_1.push(mapping.indent(width, skipFirstLine, true));\n });\n }\n return lines;\n };\n Lines.prototype.indent = function (by) {\n if (by === 0) {\n return this;\n }\n var lines = new Lines(this.infos.map(function (info) {\n if (info.line && !info.locked) {\n info = tslib_1.__assign(tslib_1.__assign({}, info), { indent: info.indent + by });\n }\n return info;\n }));\n if (this.mappings.length > 0) {\n var newMappings_2 = lines.mappings;\n (0, tiny_invariant_1.default)(newMappings_2.length === 0);\n this.mappings.forEach(function (mapping) {\n newMappings_2.push(mapping.indent(by));\n });\n }\n return lines;\n };\n Lines.prototype.indentTail = function (by) {\n if (by === 0) {\n return this;\n }\n if (this.length < 2) {\n return this;\n }\n var lines = new Lines(this.infos.map(function (info, i) {\n if (i > 0 && info.line && !info.locked) {\n info = tslib_1.__assign(tslib_1.__assign({}, info), { indent: info.indent + by });\n }\n return info;\n }));\n if (this.mappings.length > 0) {\n var newMappings_3 = lines.mappings;\n (0, tiny_invariant_1.default)(newMappings_3.length === 0);\n this.mappings.forEach(function (mapping) {\n newMappings_3.push(mapping.indent(by, true));\n });\n }\n return lines;\n };\n Lines.prototype.lockIndentTail = function () {\n if (this.length < 2) {\n return this;\n }\n return new Lines(this.infos.map(function (info, i) { return (tslib_1.__assign(tslib_1.__assign({}, info), { locked: i > 0 })); }));\n };\n Lines.prototype.getIndentAt = function (line) {\n (0, tiny_invariant_1.default)(line >= 1, \"no line \" + line + \" (line numbers start from 1)\");\n return Math.max(this.infos[line - 1].indent, 0);\n };\n Lines.prototype.guessTabWidth = function () {\n if (typeof this.cachedTabWidth === \"number\") {\n return this.cachedTabWidth;\n }\n var counts = []; // Sparse array.\n var lastIndent = 0;\n for (var line = 1, last = this.length; line <= last; ++line) {\n var info = this.infos[line - 1];\n var sliced = info.line.slice(info.sliceStart, info.sliceEnd);\n // Whitespace-only lines don't tell us much about the likely tab\n // width of this code.\n if (isOnlyWhitespace(sliced)) {\n continue;\n }\n var diff = Math.abs(info.indent - lastIndent);\n counts[diff] = ~~counts[diff] + 1;\n lastIndent = info.indent;\n }\n var maxCount = -1;\n var result = 2;\n for (var tabWidth = 1; tabWidth < counts.length; tabWidth += 1) {\n if (hasOwn.call(counts, tabWidth) && counts[tabWidth] > maxCount) {\n maxCount = counts[tabWidth];\n result = tabWidth;\n }\n }\n return (this.cachedTabWidth = result);\n };\n // Determine if the list of lines has a first line that starts with a //\n // or /* comment. If this is the case, the code may need to be wrapped in\n // parens to avoid ASI issues.\n Lines.prototype.startsWithComment = function () {\n if (this.infos.length === 0) {\n return false;\n }\n var firstLineInfo = this.infos[0], sliceStart = firstLineInfo.sliceStart, sliceEnd = firstLineInfo.sliceEnd, firstLine = firstLineInfo.line.slice(sliceStart, sliceEnd).trim();\n return (firstLine.length === 0 ||\n firstLine.slice(0, 2) === \"//\" ||\n firstLine.slice(0, 2) === \"/*\");\n };\n Lines.prototype.isOnlyWhitespace = function () {\n return isOnlyWhitespace(this.toString());\n };\n Lines.prototype.isPrecededOnlyByWhitespace = function (pos) {\n var info = this.infos[pos.line - 1];\n var indent = Math.max(info.indent, 0);\n var diff = pos.column - indent;\n if (diff <= 0) {\n // If pos.column does not exceed the indentation amount, then\n // there must be only whitespace before it.\n return true;\n }\n var start = info.sliceStart;\n var end = Math.min(start + diff, info.sliceEnd);\n var prefix = info.line.slice(start, end);\n return isOnlyWhitespace(prefix);\n };\n Lines.prototype.getLineLength = function (line) {\n var info = this.infos[line - 1];\n return this.getIndentAt(line) + info.sliceEnd - info.sliceStart;\n };\n Lines.prototype.nextPos = function (pos, skipSpaces) {\n if (skipSpaces === void 0) { skipSpaces = false; }\n var l = Math.max(pos.line, 0), c = Math.max(pos.column, 0);\n if (c < this.getLineLength(l)) {\n pos.column += 1;\n return skipSpaces ? !!this.skipSpaces(pos, false, true) : true;\n }\n if (l < this.length) {\n pos.line += 1;\n pos.column = 0;\n return skipSpaces ? !!this.skipSpaces(pos, false, true) : true;\n }\n return false;\n };\n Lines.prototype.prevPos = function (pos, skipSpaces) {\n if (skipSpaces === void 0) { skipSpaces = false; }\n var l = pos.line, c = pos.column;\n if (c < 1) {\n l -= 1;\n if (l < 1)\n return false;\n c = this.getLineLength(l);\n }\n else {\n c = Math.min(c - 1, this.getLineLength(l));\n }\n pos.line = l;\n pos.column = c;\n return skipSpaces ? !!this.skipSpaces(pos, true, true) : true;\n };\n Lines.prototype.firstPos = function () {\n // Trivial, but provided for completeness.\n return { line: 1, column: 0 };\n };\n Lines.prototype.lastPos = function () {\n return {\n line: this.length,\n column: this.getLineLength(this.length),\n };\n };\n Lines.prototype.skipSpaces = function (pos, backward, modifyInPlace) {\n if (backward === void 0) { backward = false; }\n if (modifyInPlace === void 0) { modifyInPlace = false; }\n if (pos) {\n pos = modifyInPlace\n ? pos\n : {\n line: pos.line,\n column: pos.column,\n };\n }\n else if (backward) {\n pos = this.lastPos();\n }\n else {\n pos = this.firstPos();\n }\n if (backward) {\n while (this.prevPos(pos)) {\n if (!isOnlyWhitespace(this.charAt(pos)) && this.nextPos(pos)) {\n return pos;\n }\n }\n return null;\n }\n else {\n while (isOnlyWhitespace(this.charAt(pos))) {\n if (!this.nextPos(pos)) {\n return null;\n }\n }\n return pos;\n }\n };\n Lines.prototype.trimLeft = function () {\n var pos = this.skipSpaces(this.firstPos(), false, true);\n return pos ? this.slice(pos) : emptyLines;\n };\n Lines.prototype.trimRight = function () {\n var pos = this.skipSpaces(this.lastPos(), true, true);\n return pos ? this.slice(this.firstPos(), pos) : emptyLines;\n };\n Lines.prototype.trim = function () {\n var start = this.skipSpaces(this.firstPos(), false, true);\n if (start === null) {\n return emptyLines;\n }\n var end = this.skipSpaces(this.lastPos(), true, true);\n if (end === null) {\n return emptyLines;\n }\n return this.slice(start, end);\n };\n Lines.prototype.eachPos = function (callback, startPos, skipSpaces) {\n if (startPos === void 0) { startPos = this.firstPos(); }\n if (skipSpaces === void 0) { skipSpaces = false; }\n var pos = this.firstPos();\n if (startPos) {\n (pos.line = startPos.line), (pos.column = startPos.column);\n }\n if (skipSpaces && !this.skipSpaces(pos, false, true)) {\n return; // Encountered nothing but spaces.\n }\n do\n callback.call(this, pos);\n while (this.nextPos(pos, skipSpaces));\n };\n Lines.prototype.bootstrapSlice = function (start, end) {\n var strings = this.toString()\n .split(lineTerminatorSeqExp)\n .slice(start.line - 1, end.line);\n if (strings.length > 0) {\n strings.push(strings.pop().slice(0, end.column));\n strings[0] = strings[0].slice(start.column);\n }\n return fromString(strings.join(\"\\n\"));\n };\n Lines.prototype.slice = function (start, end) {\n if (!end) {\n if (!start) {\n // The client seems to want a copy of this Lines object, but\n // Lines objects are immutable, so it's perfectly adequate to\n // return the same object.\n return this;\n }\n // Slice to the end if no end position was provided.\n end = this.lastPos();\n }\n if (!start) {\n throw new Error(\"cannot slice with end but not start\");\n }\n var sliced = this.infos.slice(start.line - 1, end.line);\n if (start.line === end.line) {\n sliced[0] = sliceInfo(sliced[0], start.column, end.column);\n }\n else {\n (0, tiny_invariant_1.default)(start.line < end.line);\n sliced[0] = sliceInfo(sliced[0], start.column);\n sliced.push(sliceInfo(sliced.pop(), 0, end.column));\n }\n var lines = new Lines(sliced);\n if (this.mappings.length > 0) {\n var newMappings_4 = lines.mappings;\n (0, tiny_invariant_1.default)(newMappings_4.length === 0);\n this.mappings.forEach(function (mapping) {\n var sliced = mapping.slice(this, start, end);\n if (sliced) {\n newMappings_4.push(sliced);\n }\n }, this);\n }\n return lines;\n };\n Lines.prototype.bootstrapSliceString = function (start, end, options) {\n return this.slice(start, end).toString(options);\n };\n Lines.prototype.sliceString = function (start, end, options) {\n if (start === void 0) { start = this.firstPos(); }\n if (end === void 0) { end = this.lastPos(); }\n var _a = (0, options_1.normalize)(options), tabWidth = _a.tabWidth, useTabs = _a.useTabs, reuseWhitespace = _a.reuseWhitespace, lineTerminator = _a.lineTerminator;\n var parts = [];\n for (var line = start.line; line <= end.line; ++line) {\n var info = this.infos[line - 1];\n if (line === start.line) {\n if (line === end.line) {\n info = sliceInfo(info, start.column, end.column);\n }\n else {\n info = sliceInfo(info, start.column);\n }\n }\n else if (line === end.line) {\n info = sliceInfo(info, 0, end.column);\n }\n var indent = Math.max(info.indent, 0);\n var before_1 = info.line.slice(0, info.sliceStart);\n if (reuseWhitespace &&\n isOnlyWhitespace(before_1) &&\n countSpaces(before_1, tabWidth) === indent) {\n // Reuse original spaces if the indentation is correct.\n parts.push(info.line.slice(0, info.sliceEnd));\n continue;\n }\n var tabs = 0;\n var spaces = indent;\n if (useTabs) {\n tabs = Math.floor(indent / tabWidth);\n spaces -= tabs * tabWidth;\n }\n var result = \"\";\n if (tabs > 0) {\n result += new Array(tabs + 1).join(\"\\t\");\n }\n if (spaces > 0) {\n result += new Array(spaces + 1).join(\" \");\n }\n result += info.line.slice(info.sliceStart, info.sliceEnd);\n parts.push(result);\n }\n return parts.join(lineTerminator);\n };\n Lines.prototype.isEmpty = function () {\n return this.length < 2 && this.getLineLength(1) < 1;\n };\n Lines.prototype.join = function (elements) {\n var separator = this;\n var infos = [];\n var mappings = [];\n var prevInfo;\n function appendLines(linesOrNull) {\n if (linesOrNull === null) {\n return;\n }\n if (prevInfo) {\n var info = linesOrNull.infos[0];\n var indent = new Array(info.indent + 1).join(\" \");\n var prevLine_1 = infos.length;\n var prevColumn_1 = Math.max(prevInfo.indent, 0) +\n prevInfo.sliceEnd -\n prevInfo.sliceStart;\n prevInfo.line =\n prevInfo.line.slice(0, prevInfo.sliceEnd) +\n indent +\n info.line.slice(info.sliceStart, info.sliceEnd);\n // If any part of a line is indentation-locked, the whole line\n // will be indentation-locked.\n prevInfo.locked = prevInfo.locked || info.locked;\n prevInfo.sliceEnd = prevInfo.line.length;\n if (linesOrNull.mappings.length > 0) {\n linesOrNull.mappings.forEach(function (mapping) {\n mappings.push(mapping.add(prevLine_1, prevColumn_1));\n });\n }\n }\n else if (linesOrNull.mappings.length > 0) {\n mappings.push.apply(mappings, linesOrNull.mappings);\n }\n linesOrNull.infos.forEach(function (info, i) {\n if (!prevInfo || i > 0) {\n prevInfo = tslib_1.__assign({}, info);\n infos.push(prevInfo);\n }\n });\n }\n function appendWithSeparator(linesOrNull, i) {\n if (i > 0)\n appendLines(separator);\n appendLines(linesOrNull);\n }\n elements\n .map(function (elem) {\n var lines = fromString(elem);\n if (lines.isEmpty())\n return null;\n return lines;\n })\n .forEach(function (linesOrNull, i) {\n if (separator.isEmpty()) {\n appendLines(linesOrNull);\n }\n else {\n appendWithSeparator(linesOrNull, i);\n }\n });\n if (infos.length < 1)\n return emptyLines;\n var lines = new Lines(infos);\n lines.mappings = mappings;\n return lines;\n };\n Lines.prototype.concat = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var list = [this];\n list.push.apply(list, args);\n (0, tiny_invariant_1.default)(list.length === args.length + 1);\n return emptyLines.join(list);\n };\n return Lines;\n}());\nexports.Lines = Lines;\nvar fromStringCache = {};\nvar hasOwn = fromStringCache.hasOwnProperty;\nvar maxCacheKeyLen = 10;\nfunction countSpaces(spaces, tabWidth) {\n var count = 0;\n var len = spaces.length;\n for (var i = 0; i < len; ++i) {\n switch (spaces.charCodeAt(i)) {\n case 9: {\n // '\\t'\n (0, tiny_invariant_1.default)(typeof tabWidth === \"number\");\n (0, tiny_invariant_1.default)(tabWidth > 0);\n var next = Math.ceil(count / tabWidth) * tabWidth;\n if (next === count) {\n count += tabWidth;\n }\n else {\n count = next;\n }\n break;\n }\n case 11: // '\\v'\n case 12: // '\\f'\n case 13: // '\\r'\n case 0xfeff: // zero-width non-breaking space\n // These characters contribute nothing to indentation.\n break;\n case 32: // ' '\n default:\n // Treat all other whitespace like ' '.\n count += 1;\n break;\n }\n }\n return count;\n}\nexports.countSpaces = countSpaces;\nvar leadingSpaceExp = /^\\s*/;\n// As specified here: http://www.ecma-international.org/ecma-262/6.0/#sec-line-terminators\nvar lineTerminatorSeqExp = /\\u000D\\u000A|\\u000D(?!\\u000A)|\\u000A|\\u2028|\\u2029/;\n/**\n * @param {Object} options - Options object that configures printing.\n */\nfunction fromString(string, options) {\n if (string instanceof Lines)\n return string;\n string += \"\";\n var tabWidth = options && options.tabWidth;\n var tabless = string.indexOf(\"\\t\") < 0;\n var cacheable = !options && tabless && string.length <= maxCacheKeyLen;\n (0, tiny_invariant_1.default)(tabWidth || tabless, \"No tab width specified but encountered tabs in string\\n\" + string);\n if (cacheable && hasOwn.call(fromStringCache, string))\n return fromStringCache[string];\n var lines = new Lines(string.split(lineTerminatorSeqExp).map(function (line) {\n // TODO: handle null exec result\n var spaces = leadingSpaceExp.exec(line)[0];\n return {\n line: line,\n indent: countSpaces(spaces, tabWidth),\n // Boolean indicating whether this line can be reindented.\n locked: false,\n sliceStart: spaces.length,\n sliceEnd: line.length,\n };\n }), (0, options_1.normalize)(options).sourceFileName);\n if (cacheable)\n fromStringCache[string] = lines;\n return lines;\n}\nexports.fromString = fromString;\nfunction isOnlyWhitespace(string) {\n return !/\\S/.test(string);\n}\nfunction sliceInfo(info, startCol, endCol) {\n var sliceStart = info.sliceStart;\n var sliceEnd = info.sliceEnd;\n var indent = Math.max(info.indent, 0);\n var lineLength = indent + sliceEnd - sliceStart;\n if (typeof endCol === \"undefined\") {\n endCol = lineLength;\n }\n startCol = Math.max(startCol, 0);\n endCol = Math.min(endCol, lineLength);\n endCol = Math.max(endCol, startCol);\n if (endCol < indent) {\n indent = endCol;\n sliceEnd = sliceStart;\n }\n else {\n sliceEnd -= lineLength - endCol;\n }\n lineLength = endCol;\n lineLength -= startCol;\n if (startCol < indent) {\n indent -= startCol;\n }\n else {\n startCol -= indent;\n indent = 0;\n sliceStart += startCol;\n }\n (0, tiny_invariant_1.default)(indent >= 0);\n (0, tiny_invariant_1.default)(sliceStart <= sliceEnd);\n (0, tiny_invariant_1.default)(lineLength === indent + sliceEnd - sliceStart);\n if (info.indent === indent &&\n info.sliceStart === sliceStart &&\n info.sliceEnd === sliceEnd) {\n return info;\n }\n return {\n line: info.line,\n indent: indent,\n // A destructive slice always unlocks indentation.\n locked: false,\n sliceStart: sliceStart,\n sliceEnd: sliceEnd,\n };\n}\nfunction concat(elements) {\n return emptyLines.join(elements);\n}\nexports.concat = concat;\n// The emptyLines object needs to be created all the way down here so that\n// Lines.prototype will be fully populated.\nvar emptyLines = fromString(\"\");\n",
10
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.printComments = exports.attach = void 0;\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nvar n = types.namedTypes;\nvar isArray = types.builtInTypes.array;\nvar isObject = types.builtInTypes.object;\nvar lines_1 = require(\"./lines\");\nvar util_1 = require(\"./util\");\nvar childNodesCache = new WeakMap();\n// TODO Move a non-caching implementation of this function into ast-types,\n// and implement a caching wrapper function here.\nfunction getSortedChildNodes(node, lines, resultArray) {\n if (!node) {\n return resultArray;\n }\n // The .loc checks below are sensitive to some of the problems that\n // are fixed by this utility function. Specifically, if it decides to\n // set node.loc to null, indicating that the node's .loc information\n // is unreliable, then we don't want to add node to the resultArray.\n (0, util_1.fixFaultyLocations)(node, lines);\n if (resultArray) {\n if (n.Node.check(node) && n.SourceLocation.check(node.loc)) {\n // This reverse insertion sort almost always takes constant\n // time because we almost always (maybe always?) append the\n // nodes in order anyway.\n var i = resultArray.length - 1;\n for (; i >= 0; --i) {\n var child = resultArray[i];\n if (child &&\n child.loc &&\n (0, util_1.comparePos)(child.loc.end, node.loc.start) <= 0) {\n break;\n }\n }\n resultArray.splice(i + 1, 0, node);\n return resultArray;\n }\n }\n else {\n var childNodes = childNodesCache.get(node);\n if (childNodes) {\n return childNodes;\n }\n }\n var names;\n if (isArray.check(node)) {\n names = Object.keys(node);\n }\n else if (isObject.check(node)) {\n names = types.getFieldNames(node);\n }\n else {\n return resultArray;\n }\n if (!resultArray) {\n childNodesCache.set(node, (resultArray = []));\n }\n for (var i = 0, nameCount = names.length; i < nameCount; ++i) {\n getSortedChildNodes(node[names[i]], lines, resultArray);\n }\n return resultArray;\n}\n// As efficiently as possible, decorate the comment object with\n// .precedingNode, .enclosingNode, and/or .followingNode properties, at\n// least one of which is guaranteed to be defined.\nfunction decorateComment(node, comment, lines) {\n var childNodes = getSortedChildNodes(node, lines);\n // Time to dust off the old binary search robes and wizard hat.\n var left = 0;\n var right = childNodes && childNodes.length;\n var precedingNode;\n var followingNode;\n while (typeof right === \"number\" && left < right) {\n var middle = (left + right) >> 1;\n var child = childNodes[middle];\n if ((0, util_1.comparePos)(child.loc.start, comment.loc.start) <= 0 &&\n (0, util_1.comparePos)(comment.loc.end, child.loc.end) <= 0) {\n // The comment is completely contained by this child node.\n decorateComment((comment.enclosingNode = child), comment, lines);\n return; // Abandon the binary search at this level.\n }\n if ((0, util_1.comparePos)(child.loc.end, comment.loc.start) <= 0) {\n // This child node falls completely before the comment.\n // Because we will never consider this node or any nodes\n // before it again, this node must be the closest preceding\n // node we have encountered so far.\n precedingNode = child;\n left = middle + 1;\n continue;\n }\n if ((0, util_1.comparePos)(comment.loc.end, child.loc.start) <= 0) {\n // This child node falls completely after the comment.\n // Because we will never consider this node or any nodes after\n // it again, this node must be the closest following node we\n // have encountered so far.\n followingNode = child;\n right = middle;\n continue;\n }\n throw new Error(\"Comment location overlaps with node location\");\n }\n if (precedingNode) {\n comment.precedingNode = precedingNode;\n }\n if (followingNode) {\n comment.followingNode = followingNode;\n }\n}\nfunction attach(comments, ast, lines) {\n if (!isArray.check(comments)) {\n return;\n }\n var tiesToBreak = [];\n comments.forEach(function (comment) {\n comment.loc.lines = lines;\n decorateComment(ast, comment, lines);\n var pn = comment.precedingNode;\n var en = comment.enclosingNode;\n var fn = comment.followingNode;\n if (pn && fn) {\n var tieCount = tiesToBreak.length;\n if (tieCount > 0) {\n var lastTie = tiesToBreak[tieCount - 1];\n (0, tiny_invariant_1.default)((lastTie.precedingNode === comment.precedingNode) ===\n (lastTie.followingNode === comment.followingNode));\n if (lastTie.followingNode !== comment.followingNode) {\n breakTies(tiesToBreak, lines);\n }\n }\n tiesToBreak.push(comment);\n }\n else if (pn) {\n // No contest: we have a trailing comment.\n breakTies(tiesToBreak, lines);\n addTrailingComment(pn, comment);\n }\n else if (fn) {\n // No contest: we have a leading comment.\n breakTies(tiesToBreak, lines);\n addLeadingComment(fn, comment);\n }\n else if (en) {\n // The enclosing node has no child nodes at all, so what we\n // have here is a dangling comment, e.g. [/* crickets */].\n breakTies(tiesToBreak, lines);\n addDanglingComment(en, comment);\n }\n else {\n throw new Error(\"AST contains no nodes at all?\");\n }\n });\n breakTies(tiesToBreak, lines);\n comments.forEach(function (comment) {\n // These node references were useful for breaking ties, but we\n // don't need them anymore, and they create cycles in the AST that\n // may lead to infinite recursion if we don't delete them here.\n delete comment.precedingNode;\n delete comment.enclosingNode;\n delete comment.followingNode;\n });\n}\nexports.attach = attach;\nfunction breakTies(tiesToBreak, lines) {\n var tieCount = tiesToBreak.length;\n if (tieCount === 0) {\n return;\n }\n var pn = tiesToBreak[0].precedingNode;\n var fn = tiesToBreak[0].followingNode;\n var gapEndPos = fn.loc.start;\n // Iterate backwards through tiesToBreak, examining the gaps\n // between the tied comments. In order to qualify as leading, a\n // comment must be separated from fn by an unbroken series of\n // whitespace-only gaps (or other comments).\n var indexOfFirstLeadingComment = tieCount;\n var comment;\n for (; indexOfFirstLeadingComment > 0; --indexOfFirstLeadingComment) {\n comment = tiesToBreak[indexOfFirstLeadingComment - 1];\n (0, tiny_invariant_1.default)(comment.precedingNode === pn);\n (0, tiny_invariant_1.default)(comment.followingNode === fn);\n var gap = lines.sliceString(comment.loc.end, gapEndPos);\n if (/\\S/.test(gap)) {\n // The gap string contained something other than whitespace.\n break;\n }\n gapEndPos = comment.loc.start;\n }\n while (indexOfFirstLeadingComment <= tieCount &&\n (comment = tiesToBreak[indexOfFirstLeadingComment]) &&\n // If the comment is a //-style comment and indented more\n // deeply than the node itself, reconsider it as trailing.\n (comment.type === \"Line\" || comment.type === \"CommentLine\") &&\n comment.loc.start.column > fn.loc.start.column) {\n ++indexOfFirstLeadingComment;\n }\n if (indexOfFirstLeadingComment) {\n var enclosingNode = tiesToBreak[indexOfFirstLeadingComment - 1].enclosingNode;\n if ((enclosingNode === null || enclosingNode === void 0 ? void 0 : enclosingNode.type) === \"CallExpression\") {\n --indexOfFirstLeadingComment;\n }\n }\n tiesToBreak.forEach(function (comment, i) {\n if (i < indexOfFirstLeadingComment) {\n addTrailingComment(pn, comment);\n }\n else {\n addLeadingComment(fn, comment);\n }\n });\n tiesToBreak.length = 0;\n}\nfunction addCommentHelper(node, comment) {\n var comments = node.comments || (node.comments = []);\n comments.push(comment);\n}\nfunction addLeadingComment(node, comment) {\n comment.leading = true;\n comment.trailing = false;\n addCommentHelper(node, comment);\n}\nfunction addDanglingComment(node, comment) {\n comment.leading = false;\n comment.trailing = false;\n addCommentHelper(node, comment);\n}\nfunction addTrailingComment(node, comment) {\n comment.leading = false;\n comment.trailing = true;\n addCommentHelper(node, comment);\n}\nfunction printLeadingComment(commentPath, print) {\n var comment = commentPath.getValue();\n n.Comment.assert(comment);\n var loc = comment.loc;\n var lines = loc && loc.lines;\n var parts = [print(commentPath)];\n if (comment.trailing) {\n // When we print trailing comments as leading comments, we don't\n // want to bring any trailing spaces along.\n parts.push(\"\\n\");\n }\n else if (lines instanceof lines_1.Lines) {\n var trailingSpace = lines.slice(loc.end, lines.skipSpaces(loc.end) || lines.lastPos());\n if (trailingSpace.length === 1) {\n // If the trailing space contains no newlines, then we want to\n // preserve it exactly as we found it.\n parts.push(trailingSpace);\n }\n else {\n // If the trailing space contains newlines, then replace it\n // with just that many newlines, with all other spaces removed.\n parts.push(new Array(trailingSpace.length).join(\"\\n\"));\n }\n }\n else {\n parts.push(\"\\n\");\n }\n return (0, lines_1.concat)(parts);\n}\nfunction printTrailingComment(commentPath, print) {\n var comment = commentPath.getValue(commentPath);\n n.Comment.assert(comment);\n var loc = comment.loc;\n var lines = loc && loc.lines;\n var parts = [];\n if (lines instanceof lines_1.Lines) {\n var fromPos = lines.skipSpaces(loc.start, true) || lines.firstPos();\n var leadingSpace = lines.slice(fromPos, loc.start);\n if (leadingSpace.length === 1) {\n // If the leading space contains no newlines, then we want to\n // preserve it exactly as we found it.\n parts.push(leadingSpace);\n }\n else {\n // If the leading space contains newlines, then replace it\n // with just that many newlines, sans all other spaces.\n parts.push(new Array(leadingSpace.length).join(\"\\n\"));\n }\n }\n parts.push(print(commentPath));\n return (0, lines_1.concat)(parts);\n}\nfunction printComments(path, print) {\n var value = path.getValue();\n var innerLines = print(path);\n var comments = n.Node.check(value) && types.getFieldValue(value, \"comments\");\n if (!comments || comments.length === 0) {\n return innerLines;\n }\n var leadingParts = [];\n var trailingParts = [innerLines];\n path.each(function (commentPath) {\n var comment = commentPath.getValue();\n var leading = types.getFieldValue(comment, \"leading\");\n var trailing = types.getFieldValue(comment, \"trailing\");\n if (leading ||\n (trailing &&\n !(n.Statement.check(value) ||\n comment.type === \"Block\" ||\n comment.type === \"CommentBlock\"))) {\n leadingParts.push(printLeadingComment(commentPath, print));\n }\n else if (trailing) {\n trailingParts.push(printTrailingComment(commentPath, print));\n }\n }, \"comments\");\n leadingParts.push.apply(leadingParts, trailingParts);\n return (0, lines_1.concat)(leadingParts);\n}\nexports.printComments = printComments;\n",
11
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nvar b = types.builders;\nvar isObject = types.builtInTypes.object;\nvar isArray = types.builtInTypes.array;\nvar options_1 = require(\"./options\");\nvar lines_1 = require(\"./lines\");\nvar comments_1 = require(\"./comments\");\nvar util = tslib_1.__importStar(require(\"./util\"));\nfunction parse(source, options) {\n options = (0, options_1.normalize)(options);\n var lines = (0, lines_1.fromString)(source, options);\n var sourceWithoutTabs = lines.toString({\n tabWidth: options.tabWidth,\n reuseWhitespace: false,\n useTabs: false,\n });\n var comments = [];\n var ast = options.parser.parse(sourceWithoutTabs, {\n jsx: true,\n loc: true,\n locations: true,\n range: options.range,\n comment: true,\n onComment: comments,\n tolerant: util.getOption(options, \"tolerant\", true),\n ecmaVersion: 6,\n sourceType: util.getOption(options, \"sourceType\", \"module\"),\n });\n // Use ast.tokens if possible, and otherwise fall back to the Esprima\n // tokenizer. All the preconfigured ../parsers/* expose ast.tokens\n // automatically, but custom parsers might need additional configuration\n // to avoid this fallback.\n var tokens = Array.isArray(ast.tokens)\n ? ast.tokens\n : require(\"esprima\").tokenize(sourceWithoutTabs, {\n loc: true,\n });\n // We will reattach the tokens array to the file object below.\n delete ast.tokens;\n // Make sure every token has a token.value string.\n tokens.forEach(function (token) {\n if (typeof token.value !== \"string\") {\n token.value = lines.sliceString(token.loc.start, token.loc.end);\n }\n });\n if (Array.isArray(ast.comments)) {\n comments = ast.comments;\n delete ast.comments;\n }\n if (ast.loc) {\n // If the source was empty, some parsers give loc.{start,end}.line\n // values of 0, instead of the minimum of 1.\n util.fixFaultyLocations(ast, lines);\n }\n else {\n ast.loc = {\n start: lines.firstPos(),\n end: lines.lastPos(),\n };\n }\n ast.loc.lines = lines;\n ast.loc.indent = 0;\n var file;\n var program;\n if (ast.type === \"Program\") {\n program = ast;\n // In order to ensure we reprint leading and trailing program\n // comments, wrap the original Program node with a File node. Only\n // ESTree parsers (Acorn and Esprima) return a Program as the root AST\n // node. Most other (Babylon-like) parsers return a File.\n file = b.file(ast, options.sourceFileName || null);\n file.loc = {\n start: lines.firstPos(),\n end: lines.lastPos(),\n lines: lines,\n indent: 0,\n };\n }\n else if (ast.type === \"File\") {\n file = ast;\n program = file.program;\n }\n // Expose file.tokens unless the caller passed false for options.tokens.\n if (options.tokens) {\n file.tokens = tokens;\n }\n // Expand the Program's .loc to include all comments (not just those\n // attached to the Program node, as its children may have comments as\n // well), since sometimes program.loc.{start,end} will coincide with the\n // .loc.{start,end} of the first and last *statements*, mistakenly\n // excluding comments that fall outside that region.\n var trueProgramLoc = util.getTrueLoc({\n type: program.type,\n loc: program.loc,\n body: [],\n comments: comments,\n }, lines);\n program.loc.start = trueProgramLoc.start;\n program.loc.end = trueProgramLoc.end;\n // Passing file.program here instead of just file means that initial\n // comments will be attached to program.body[0] instead of program.\n (0, comments_1.attach)(comments, program.body.length ? file.program : file, lines);\n // Return a copy of the original AST so that any changes made may be\n // compared to the original.\n return new TreeCopier(lines, tokens).copy(file);\n}\nexports.parse = parse;\nvar TreeCopier = function TreeCopier(lines, tokens) {\n (0, tiny_invariant_1.default)(this instanceof TreeCopier);\n this.lines = lines;\n this.tokens = tokens;\n this.startTokenIndex = 0;\n this.endTokenIndex = tokens.length;\n this.indent = 0;\n this.seen = new Map();\n};\nvar TCp = TreeCopier.prototype;\nTCp.copy = function (node) {\n if (this.seen.has(node)) {\n return this.seen.get(node);\n }\n if (isArray.check(node)) {\n var copy_1 = new Array(node.length);\n this.seen.set(node, copy_1);\n node.forEach(function (item, i) {\n copy_1[i] = this.copy(item);\n }, this);\n return copy_1;\n }\n if (!isObject.check(node)) {\n return node;\n }\n util.fixFaultyLocations(node, this.lines);\n var copy = Object.create(Object.getPrototypeOf(node), {\n original: {\n // Provide a link from the copy to the original.\n value: node,\n configurable: false,\n enumerable: false,\n writable: true,\n },\n });\n this.seen.set(node, copy);\n var loc = node.loc;\n var oldIndent = this.indent;\n var newIndent = oldIndent;\n var oldStartTokenIndex = this.startTokenIndex;\n var oldEndTokenIndex = this.endTokenIndex;\n if (loc) {\n // When node is a comment, we set node.loc.indent to\n // node.loc.start.column so that, when/if we print the comment by\n // itself, we can strip that much whitespace from the left margin of\n // the comment. This only really matters for multiline Block comments,\n // but it doesn't hurt for Line comments.\n if (node.type === \"Block\" ||\n node.type === \"Line\" ||\n node.type === \"CommentBlock\" ||\n node.type === \"CommentLine\" ||\n this.lines.isPrecededOnlyByWhitespace(loc.start)) {\n newIndent = this.indent = loc.start.column;\n }\n // Every node.loc has a reference to the original source lines as well\n // as a complete list of source tokens.\n loc.lines = this.lines;\n loc.tokens = this.tokens;\n loc.indent = newIndent;\n // Set loc.start.token and loc.end.token such that\n // loc.tokens.slice(loc.start.token, loc.end.token) returns a list of\n // all the tokens that make up this node.\n this.findTokenRange(loc);\n }\n var keys = Object.keys(node);\n var keyCount = keys.length;\n for (var i = 0; i < keyCount; ++i) {\n var key = keys[i];\n if (key === \"loc\") {\n copy[key] = node[key];\n }\n else if (key === \"tokens\" && node.type === \"File\") {\n // Preserve file.tokens (uncopied) in case client code cares about\n // it, even though Recast ignores it when reprinting.\n copy[key] = node[key];\n }\n else {\n copy[key] = this.copy(node[key]);\n }\n }\n this.indent = oldIndent;\n this.startTokenIndex = oldStartTokenIndex;\n this.endTokenIndex = oldEndTokenIndex;\n return copy;\n};\n// If we didn't have any idea where in loc.tokens to look for tokens\n// contained by this loc, a binary search would be appropriate, but\n// because we maintain this.startTokenIndex and this.endTokenIndex as we\n// traverse the AST, we only need to make small (linear) adjustments to\n// those indexes with each recursive iteration.\nTCp.findTokenRange = function (loc) {\n // In the unlikely event that loc.tokens[this.startTokenIndex] starts\n // *after* loc.start, we need to rewind this.startTokenIndex first.\n while (this.startTokenIndex > 0) {\n var token = loc.tokens[this.startTokenIndex];\n if (util.comparePos(loc.start, token.loc.start) < 0) {\n --this.startTokenIndex;\n }\n else\n break;\n }\n // In the unlikely event that loc.tokens[this.endTokenIndex - 1] ends\n // *before* loc.end, we need to fast-forward this.endTokenIndex first.\n while (this.endTokenIndex < loc.tokens.length) {\n var token = loc.tokens[this.endTokenIndex];\n if (util.comparePos(token.loc.end, loc.end) < 0) {\n ++this.endTokenIndex;\n }\n else\n break;\n }\n // Increment this.startTokenIndex until we've found the first token\n // contained by this node.\n while (this.startTokenIndex < this.endTokenIndex) {\n var token = loc.tokens[this.startTokenIndex];\n if (util.comparePos(token.loc.start, loc.start) < 0) {\n ++this.startTokenIndex;\n }\n else\n break;\n }\n // Index into loc.tokens of the first token within this node.\n loc.start.token = this.startTokenIndex;\n // Decrement this.endTokenIndex until we've found the first token after\n // this node (not contained by the node).\n while (this.endTokenIndex > this.startTokenIndex) {\n var token = loc.tokens[this.endTokenIndex - 1];\n if (util.comparePos(loc.end, token.loc.end) < 0) {\n --this.endTokenIndex;\n }\n else\n break;\n }\n // Index into loc.tokens of the first token *after* this node.\n // If loc.start.token === loc.end.token, the node contains no tokens,\n // and the index is that of the next token following this node.\n loc.end.token = this.endTokenIndex;\n};\n",
12
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nvar util = tslib_1.__importStar(require(\"./util\"));\nvar n = types.namedTypes;\nvar isArray = types.builtInTypes.array;\nvar isNumber = types.builtInTypes.number;\nvar PRECEDENCE = {};\n[\n [\"??\"],\n [\"||\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"],\n [\"**\"],\n].forEach(function (tier, i) {\n tier.forEach(function (op) {\n PRECEDENCE[op] = i;\n });\n});\nvar FastPath = function FastPath(value) {\n (0, tiny_invariant_1.default)(this instanceof FastPath);\n this.stack = [value];\n};\nvar FPp = FastPath.prototype;\n// Static convenience function for coercing a value to a FastPath.\nFastPath.from = function (obj) {\n if (obj instanceof FastPath) {\n // Return a defensive copy of any existing FastPath instances.\n return obj.copy();\n }\n if (obj instanceof types.NodePath) {\n // For backwards compatibility, unroll NodePath instances into\n // lightweight FastPath [..., name, value] stacks.\n var copy = Object.create(FastPath.prototype);\n var stack = [obj.value];\n for (var pp = void 0; (pp = obj.parentPath); obj = pp)\n stack.push(obj.name, pp.value);\n copy.stack = stack.reverse();\n return copy;\n }\n // Otherwise use obj as the value of the new FastPath instance.\n return new FastPath(obj);\n};\nFPp.copy = function copy() {\n var copy = Object.create(FastPath.prototype);\n copy.stack = this.stack.slice(0);\n return copy;\n};\n// The name of the current property is always the penultimate element of\n// this.stack, and always a String.\nFPp.getName = function getName() {\n var s = this.stack;\n var len = s.length;\n if (len > 1) {\n return s[len - 2];\n }\n // Since the name is always a string, null is a safe sentinel value to\n // return if we do not know the name of the (root) value.\n return null;\n};\n// The value of the current property is always the final element of\n// this.stack.\nFPp.getValue = function getValue() {\n var s = this.stack;\n return s[s.length - 1];\n};\nFPp.valueIsDuplicate = function () {\n var s = this.stack;\n var valueIndex = s.length - 1;\n return s.lastIndexOf(s[valueIndex], valueIndex - 1) >= 0;\n};\nfunction getNodeHelper(path, count) {\n var s = path.stack;\n for (var i = s.length - 1; i >= 0; i -= 2) {\n var value = s[i];\n if (n.Node.check(value) && --count < 0) {\n return value;\n }\n }\n return null;\n}\nFPp.getNode = function getNode(count) {\n if (count === void 0) { count = 0; }\n return getNodeHelper(this, ~~count);\n};\nFPp.getParentNode = function getParentNode(count) {\n if (count === void 0) { count = 0; }\n return getNodeHelper(this, ~~count + 1);\n};\n// The length of the stack can be either even or odd, depending on whether\n// or not we have a name for the root value. The difference between the\n// index of the root value and the index of the final value is always\n// even, though, which allows us to return the root value in constant time\n// (i.e. without iterating backwards through the stack).\nFPp.getRootValue = function getRootValue() {\n var s = this.stack;\n if (s.length % 2 === 0) {\n return s[1];\n }\n return s[0];\n};\n// Temporarily push properties named by string arguments given after the\n// callback function onto this.stack, then call the callback with a\n// reference to this (modified) FastPath object. Note that the stack will\n// be restored to its original state after the callback is finished, so it\n// is probably a mistake to retain a reference to the path.\nFPp.call = function call(callback /*, name1, name2, ... */) {\n var s = this.stack;\n var origLen = s.length;\n var value = s[origLen - 1];\n var argc = arguments.length;\n for (var i = 1; i < argc; ++i) {\n var name = arguments[i];\n value = value[name];\n s.push(name, value);\n }\n var result = callback(this);\n s.length = origLen;\n return result;\n};\n// Similar to FastPath.prototype.call, except that the value obtained by\n// accessing this.getValue()[name1][name2]... should be array-like. The\n// callback will be called with a reference to this path object for each\n// element of the array.\nFPp.each = function each(callback /*, name1, name2, ... */) {\n var s = this.stack;\n var origLen = s.length;\n var value = s[origLen - 1];\n var argc = arguments.length;\n for (var i = 1; i < argc; ++i) {\n var name = arguments[i];\n value = value[name];\n s.push(name, value);\n }\n for (var i = 0; i < value.length; ++i) {\n if (i in value) {\n s.push(i, value[i]);\n // If the callback needs to know the value of i, call\n // path.getName(), assuming path is the parameter name.\n callback(this);\n s.length -= 2;\n }\n }\n s.length = origLen;\n};\n// Similar to FastPath.prototype.each, except that the results of the\n// callback function invocations are stored in an array and returned at\n// the end of the iteration.\nFPp.map = function map(callback /*, name1, name2, ... */) {\n var s = this.stack;\n var origLen = s.length;\n var value = s[origLen - 1];\n var argc = arguments.length;\n for (var i = 1; i < argc; ++i) {\n var name = arguments[i];\n value = value[name];\n s.push(name, value);\n }\n var result = new Array(value.length);\n for (var i = 0; i < value.length; ++i) {\n if (i in value) {\n s.push(i, value[i]);\n result[i] = callback(this, i);\n s.length -= 2;\n }\n }\n s.length = origLen;\n return result;\n};\n// Returns true if the node at the tip of the path is wrapped with\n// parentheses, OR if the only reason the node needed parentheses was that\n// it couldn't be the first expression in the enclosing statement (see\n// FastPath#canBeFirstInStatement), and it has an opening `(` character.\n// For example, the FunctionExpression in `(function(){}())` appears to\n// need parentheses only because it's the first expression in the AST, but\n// since it happens to be preceded by a `(` (which is not apparent from\n// the AST but can be determined using FastPath#getPrevToken), there is no\n// ambiguity about how to parse it, so it counts as having parentheses,\n// even though it is not immediately followed by a `)`.\nFPp.hasParens = function () {\n var node = this.getNode();\n var prevToken = this.getPrevToken(node);\n if (!prevToken) {\n return false;\n }\n var nextToken = this.getNextToken(node);\n if (!nextToken) {\n return false;\n }\n if (prevToken.value === \"(\") {\n if (nextToken.value === \")\") {\n // If the node preceded by a `(` token and followed by a `)` token,\n // then of course it has parentheses.\n return true;\n }\n // If this is one of the few Expression types that can't come first in\n // the enclosing statement because of parsing ambiguities (namely,\n // FunctionExpression, ObjectExpression, and ClassExpression) and\n // this.firstInStatement() returns true, and the node would not need\n // parentheses in an expression context because this.needsParens(true)\n // returns false, then it just needs an opening parenthesis to resolve\n // the parsing ambiguity that made it appear to need parentheses.\n var justNeedsOpeningParen = !this.canBeFirstInStatement() &&\n this.firstInStatement() &&\n !this.needsParens(true);\n if (justNeedsOpeningParen) {\n return true;\n }\n }\n return false;\n};\nFPp.getPrevToken = function (node) {\n node = node || this.getNode();\n var loc = node && node.loc;\n var tokens = loc && loc.tokens;\n if (tokens && loc.start.token > 0) {\n var token = tokens[loc.start.token - 1];\n if (token) {\n // Do not return tokens that fall outside the root subtree.\n var rootLoc = this.getRootValue().loc;\n if (util.comparePos(rootLoc.start, token.loc.start) <= 0) {\n return token;\n }\n }\n }\n return null;\n};\nFPp.getNextToken = function (node) {\n node = node || this.getNode();\n var loc = node && node.loc;\n var tokens = loc && loc.tokens;\n if (tokens && loc.end.token < tokens.length) {\n var token = tokens[loc.end.token];\n if (token) {\n // Do not return tokens that fall outside the root subtree.\n var rootLoc = this.getRootValue().loc;\n if (util.comparePos(token.loc.end, rootLoc.end) <= 0) {\n return token;\n }\n }\n }\n return null;\n};\n// Inspired by require(\"ast-types\").NodePath.prototype.needsParens, but\n// more efficient because we're iterating backwards through a stack.\nFPp.needsParens = function (assumeExpressionContext) {\n var node = this.getNode();\n // This needs to come before `if (!parent) { return false }` because\n // an object destructuring assignment requires parens for\n // correctness even when it's the topmost expression.\n if (node.type === \"AssignmentExpression\" &&\n node.left.type === \"ObjectPattern\") {\n return true;\n }\n var parent = this.getParentNode();\n var name = this.getName();\n // If the value of this path is some child of a Node and not a Node\n // itself, then it doesn't need parentheses. Only Node objects (in fact,\n // only Expression nodes) need parentheses.\n if (this.getValue() !== node) {\n return false;\n }\n // Only statements don't need parentheses.\n if (n.Statement.check(node)) {\n return false;\n }\n // Identifiers never need parentheses.\n if (node.type === \"Identifier\") {\n return false;\n }\n if (parent && parent.type === \"ParenthesizedExpression\") {\n return false;\n }\n if (node.extra && node.extra.parenthesized) {\n return true;\n }\n if (!parent)\n return false;\n // Wrap e.g. `-1` in parentheses inside `(-1) ** 2`.\n if (node.type === \"UnaryExpression\" &&\n parent.type === \"BinaryExpression\" &&\n name === \"left\" &&\n parent.left === node &&\n parent.operator === \"**\") {\n return true;\n }\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return (parent.type === \"MemberExpression\" &&\n name === \"object\" &&\n parent.object === node);\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n switch (parent.type) {\n case \"CallExpression\":\n return name === \"callee\" && parent.callee === node;\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return true;\n case \"MemberExpression\":\n return name === \"object\" && parent.object === node;\n case \"BinaryExpression\":\n case \"LogicalExpression\": {\n var po = parent.operator;\n var pp = PRECEDENCE[po];\n var no = node.operator;\n var np = PRECEDENCE[no];\n if (pp > np) {\n return true;\n }\n if (pp === np && name === \"right\") {\n (0, tiny_invariant_1.default)(parent.right === node);\n return true;\n }\n break;\n }\n default:\n return false;\n }\n break;\n case \"SequenceExpression\":\n switch (parent.type) {\n case \"ReturnStatement\":\n return false;\n case \"ForStatement\":\n // Although parentheses wouldn't hurt around sequence expressions in\n // the head of for loops, traditional style dictates that e.g. i++,\n // j++ should not be wrapped with parentheses.\n return false;\n case \"ExpressionStatement\":\n return name !== \"expression\";\n default:\n // Otherwise err on the side of overparenthesization, adding\n // explicit exceptions above if this proves overzealous.\n return true;\n }\n case \"OptionalIndexedAccessType\":\n return node.optional && parent.type === \"IndexedAccessType\";\n case \"IntersectionTypeAnnotation\":\n case \"UnionTypeAnnotation\":\n return parent.type === \"NullableTypeAnnotation\";\n case \"Literal\":\n return (parent.type === \"MemberExpression\" &&\n isNumber.check(node.value) &&\n name === \"object\" &&\n parent.object === node);\n // Babel 6 Literal split\n case \"NumericLiteral\":\n return (parent.type === \"MemberExpression\" &&\n name === \"object\" &&\n parent.object === node);\n case \"YieldExpression\":\n case \"AwaitExpression\":\n case \"AssignmentExpression\":\n case \"ConditionalExpression\":\n switch (parent.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return true;\n case \"CallExpression\":\n case \"NewExpression\":\n return name === \"callee\" && parent.callee === node;\n case \"ConditionalExpression\":\n return name === \"test\" && parent.test === node;\n case \"MemberExpression\":\n return name === \"object\" && parent.object === node;\n default:\n return false;\n }\n case \"ArrowFunctionExpression\":\n if (n.CallExpression.check(parent) &&\n name === \"callee\" &&\n parent.callee === node) {\n return true;\n }\n if (n.MemberExpression.check(parent) &&\n name === \"object\" &&\n parent.object === node) {\n return true;\n }\n if (n.TSAsExpression &&\n n.TSAsExpression.check(parent) &&\n name === \"expression\" &&\n parent.expression === node) {\n return true;\n }\n return isBinary(parent);\n case \"ObjectExpression\":\n if (parent.type === \"ArrowFunctionExpression\" &&\n name === \"body\" &&\n parent.body === node) {\n return true;\n }\n break;\n case \"TSAsExpression\":\n if (parent.type === \"ArrowFunctionExpression\" &&\n name === \"body\" &&\n parent.body === node &&\n node.expression.type === \"ObjectExpression\") {\n return true;\n }\n break;\n case \"CallExpression\":\n if (name === \"declaration\" &&\n n.ExportDefaultDeclaration.check(parent) &&\n n.FunctionExpression.check(node.callee)) {\n return true;\n }\n }\n if (parent.type === \"NewExpression\" &&\n name === \"callee\" &&\n parent.callee === node) {\n return containsCallExpression(node);\n }\n if (assumeExpressionContext !== true &&\n !this.canBeFirstInStatement() &&\n this.firstInStatement()) {\n return true;\n }\n return false;\n};\nfunction isBinary(node) {\n return n.BinaryExpression.check(node) || n.LogicalExpression.check(node);\n}\n// @ts-ignore 'isUnaryLike' is declared but its value is never read. [6133]\nfunction isUnaryLike(node) {\n return (n.UnaryExpression.check(node) ||\n // I considered making SpreadElement and SpreadProperty subtypes of\n // UnaryExpression, but they're not really Expression nodes.\n (n.SpreadElement && n.SpreadElement.check(node)) ||\n (n.SpreadProperty && n.SpreadProperty.check(node)));\n}\nfunction containsCallExpression(node) {\n if (n.CallExpression.check(node)) {\n return true;\n }\n if (isArray.check(node)) {\n return node.some(containsCallExpression);\n }\n if (n.Node.check(node)) {\n return types.someField(node, function (_name, child) {\n return containsCallExpression(child);\n });\n }\n return false;\n}\nFPp.canBeFirstInStatement = function () {\n var node = this.getNode();\n if (n.FunctionExpression.check(node)) {\n return false;\n }\n if (n.ObjectExpression.check(node)) {\n return false;\n }\n if (n.ClassExpression.check(node)) {\n return false;\n }\n return true;\n};\nFPp.firstInStatement = function () {\n var s = this.stack;\n var parentName, parent;\n var childName, child;\n for (var i = s.length - 1; i >= 0; i -= 2) {\n if (n.Node.check(s[i])) {\n childName = parentName;\n child = parent;\n parentName = s[i - 1];\n parent = s[i];\n }\n if (!parent || !child) {\n continue;\n }\n if (n.BlockStatement.check(parent) &&\n parentName === \"body\" &&\n childName === 0) {\n (0, tiny_invariant_1.default)(parent.body[0] === child);\n return true;\n }\n if (n.ExpressionStatement.check(parent) && childName === \"expression\") {\n (0, tiny_invariant_1.default)(parent.expression === child);\n return true;\n }\n if (n.AssignmentExpression.check(parent) && childName === \"left\") {\n (0, tiny_invariant_1.default)(parent.left === child);\n return true;\n }\n if (n.ArrowFunctionExpression.check(parent) && childName === \"body\") {\n (0, tiny_invariant_1.default)(parent.body === child);\n return true;\n }\n // s[i + 1] and s[i + 2] represent the array between the parent\n // SequenceExpression node and its child nodes\n if (n.SequenceExpression.check(parent) &&\n s[i + 1] === \"expressions\" &&\n childName === 0) {\n (0, tiny_invariant_1.default)(parent.expressions[0] === child);\n continue;\n }\n if (n.CallExpression.check(parent) && childName === \"callee\") {\n (0, tiny_invariant_1.default)(parent.callee === child);\n continue;\n }\n if (n.MemberExpression.check(parent) && childName === \"object\") {\n (0, tiny_invariant_1.default)(parent.object === child);\n continue;\n }\n if (n.ConditionalExpression.check(parent) && childName === \"test\") {\n (0, tiny_invariant_1.default)(parent.test === child);\n continue;\n }\n if (isBinary(parent) && childName === \"left\") {\n (0, tiny_invariant_1.default)(parent.left === child);\n continue;\n }\n if (n.UnaryExpression.check(parent) &&\n !parent.prefix &&\n childName === \"argument\") {\n (0, tiny_invariant_1.default)(parent.argument === child);\n continue;\n }\n return false;\n }\n return true;\n};\nexports.default = FastPath;\n",
13
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getReprinter = exports.Patcher = void 0;\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar linesModule = tslib_1.__importStar(require(\"./lines\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nvar Printable = types.namedTypes.Printable;\nvar Expression = types.namedTypes.Expression;\nvar ReturnStatement = types.namedTypes.ReturnStatement;\nvar SourceLocation = types.namedTypes.SourceLocation;\nvar util_1 = require(\"./util\");\nvar fast_path_1 = tslib_1.__importDefault(require(\"./fast-path\"));\nvar isObject = types.builtInTypes.object;\nvar isArray = types.builtInTypes.array;\nvar isString = types.builtInTypes.string;\nvar riskyAdjoiningCharExp = /[0-9a-z_$]/i;\nvar Patcher = function Patcher(lines) {\n (0, tiny_invariant_1.default)(this instanceof Patcher);\n (0, tiny_invariant_1.default)(lines instanceof linesModule.Lines);\n var self = this, replacements = [];\n self.replace = function (loc, lines) {\n if (isString.check(lines))\n lines = linesModule.fromString(lines);\n replacements.push({\n lines: lines,\n start: loc.start,\n end: loc.end,\n });\n };\n self.get = function (loc) {\n // If no location is provided, return the complete Lines object.\n loc = loc || {\n start: { line: 1, column: 0 },\n end: { line: lines.length, column: lines.getLineLength(lines.length) },\n };\n var sliceFrom = loc.start, toConcat = [];\n function pushSlice(from, to) {\n (0, tiny_invariant_1.default)((0, util_1.comparePos)(from, to) <= 0);\n toConcat.push(lines.slice(from, to));\n }\n replacements\n .sort(function (a, b) { return (0, util_1.comparePos)(a.start, b.start); })\n .forEach(function (rep) {\n if ((0, util_1.comparePos)(sliceFrom, rep.start) > 0) {\n // Ignore nested replacement ranges.\n }\n else {\n pushSlice(sliceFrom, rep.start);\n toConcat.push(rep.lines);\n sliceFrom = rep.end;\n }\n });\n pushSlice(sliceFrom, loc.end);\n return linesModule.concat(toConcat);\n };\n};\nexports.Patcher = Patcher;\nvar Pp = Patcher.prototype;\nPp.tryToReprintComments = function (newNode, oldNode, print) {\n var patcher = this;\n if (!newNode.comments && !oldNode.comments) {\n // We were (vacuously) able to reprint all the comments!\n return true;\n }\n var newPath = fast_path_1.default.from(newNode);\n var oldPath = fast_path_1.default.from(oldNode);\n newPath.stack.push(\"comments\", getSurroundingComments(newNode));\n oldPath.stack.push(\"comments\", getSurroundingComments(oldNode));\n var reprints = [];\n var ableToReprintComments = findArrayReprints(newPath, oldPath, reprints);\n // No need to pop anything from newPath.stack or oldPath.stack, since\n // newPath and oldPath are fresh local variables.\n if (ableToReprintComments && reprints.length > 0) {\n reprints.forEach(function (reprint) {\n var oldComment = reprint.oldPath.getValue();\n (0, tiny_invariant_1.default)(oldComment.leading || oldComment.trailing);\n patcher.replace(oldComment.loc, \n // Comments can't have .comments, so it doesn't matter whether we\n // print with comments or without.\n print(reprint.newPath).indentTail(oldComment.loc.indent));\n });\n }\n return ableToReprintComments;\n};\n// Get all comments that are either leading or trailing, ignoring any\n// comments that occur inside node.loc. Returns an empty array for nodes\n// with no leading or trailing comments.\nfunction getSurroundingComments(node) {\n var result = [];\n if (node.comments && node.comments.length > 0) {\n node.comments.forEach(function (comment) {\n if (comment.leading || comment.trailing) {\n result.push(comment);\n }\n });\n }\n return result;\n}\nPp.deleteComments = function (node) {\n if (!node.comments) {\n return;\n }\n var patcher = this;\n node.comments.forEach(function (comment) {\n if (comment.leading) {\n // Delete leading comments along with any trailing whitespace they\n // might have.\n patcher.replace({\n start: comment.loc.start,\n end: node.loc.lines.skipSpaces(comment.loc.end, false, false),\n }, \"\");\n }\n else if (comment.trailing) {\n // Delete trailing comments along with any leading whitespace they\n // might have.\n patcher.replace({\n start: node.loc.lines.skipSpaces(comment.loc.start, true, false),\n end: comment.loc.end,\n }, \"\");\n }\n });\n};\nfunction getReprinter(path) {\n (0, tiny_invariant_1.default)(path instanceof fast_path_1.default);\n // Make sure that this path refers specifically to a Node, rather than\n // some non-Node subproperty of a Node.\n var node = path.getValue();\n if (!Printable.check(node))\n return;\n var orig = node.original;\n var origLoc = orig && orig.loc;\n var lines = origLoc && origLoc.lines;\n var reprints = [];\n if (!lines || !findReprints(path, reprints))\n return;\n return function (print) {\n var patcher = new Patcher(lines);\n reprints.forEach(function (reprint) {\n var newNode = reprint.newPath.getValue();\n var oldNode = reprint.oldPath.getValue();\n SourceLocation.assert(oldNode.loc, true);\n var needToPrintNewPathWithComments = !patcher.tryToReprintComments(newNode, oldNode, print);\n if (needToPrintNewPathWithComments) {\n // Since we were not able to preserve all leading/trailing\n // comments, we delete oldNode's comments, print newPath with\n // comments, and then patch the resulting lines where oldNode used\n // to be.\n patcher.deleteComments(oldNode);\n }\n var newLines = print(reprint.newPath, {\n includeComments: needToPrintNewPathWithComments,\n // If the oldNode we're replacing already had parentheses, we may\n // not need to print the new node with any extra parentheses,\n // because the existing parentheses will suffice. However, if the\n // newNode has a different type than the oldNode, let the printer\n // decide if reprint.newPath needs parentheses, as usual.\n avoidRootParens: oldNode.type === newNode.type && reprint.oldPath.hasParens(),\n }).indentTail(oldNode.loc.indent);\n var nls = needsLeadingSpace(lines, oldNode.loc, newLines);\n var nts = needsTrailingSpace(lines, oldNode.loc, newLines);\n // If we try to replace the argument of a ReturnStatement like\n // return\"asdf\" with e.g. a literal null expression, we run the risk\n // of ending up with returnnull, so we need to add an extra leading\n // space in situations where that might happen. Likewise for\n // \"asdf\"in obj. See #170.\n if (nls || nts) {\n var newParts = [];\n nls && newParts.push(\" \");\n newParts.push(newLines);\n nts && newParts.push(\" \");\n newLines = linesModule.concat(newParts);\n }\n patcher.replace(oldNode.loc, newLines);\n });\n // Recall that origLoc is the .loc of an ancestor node that is\n // guaranteed to contain all the reprinted nodes and comments.\n var patchedLines = patcher.get(origLoc).indentTail(-orig.loc.indent);\n if (path.needsParens()) {\n return linesModule.concat([\"(\", patchedLines, \")\"]);\n }\n return patchedLines;\n };\n}\nexports.getReprinter = getReprinter;\n// If the last character before oldLoc and the first character of newLines\n// are both identifier characters, they must be separated by a space,\n// otherwise they will most likely get fused together into a single token.\nfunction needsLeadingSpace(oldLines, oldLoc, newLines) {\n var posBeforeOldLoc = (0, util_1.copyPos)(oldLoc.start);\n // The character just before the location occupied by oldNode.\n var charBeforeOldLoc = oldLines.prevPos(posBeforeOldLoc) && oldLines.charAt(posBeforeOldLoc);\n // First character of the reprinted node.\n var newFirstChar = newLines.charAt(newLines.firstPos());\n return (charBeforeOldLoc &&\n riskyAdjoiningCharExp.test(charBeforeOldLoc) &&\n newFirstChar &&\n riskyAdjoiningCharExp.test(newFirstChar));\n}\n// If the last character of newLines and the first character after oldLoc\n// are both identifier characters, they must be separated by a space,\n// otherwise they will most likely get fused together into a single token.\nfunction needsTrailingSpace(oldLines, oldLoc, newLines) {\n // The character just after the location occupied by oldNode.\n var charAfterOldLoc = oldLines.charAt(oldLoc.end);\n var newLastPos = newLines.lastPos();\n // Last character of the reprinted node.\n var newLastChar = newLines.prevPos(newLastPos) && newLines.charAt(newLastPos);\n return (newLastChar &&\n riskyAdjoiningCharExp.test(newLastChar) &&\n charAfterOldLoc &&\n riskyAdjoiningCharExp.test(charAfterOldLoc));\n}\nfunction findReprints(newPath, reprints) {\n var newNode = newPath.getValue();\n Printable.assert(newNode);\n var oldNode = newNode.original;\n Printable.assert(oldNode);\n (0, tiny_invariant_1.default)(reprints.length === 0);\n if (newNode.type !== oldNode.type) {\n return false;\n }\n var oldPath = new fast_path_1.default(oldNode);\n var canReprint = findChildReprints(newPath, oldPath, reprints);\n if (!canReprint) {\n // Make absolutely sure the calling code does not attempt to reprint\n // any nodes.\n reprints.length = 0;\n }\n return canReprint;\n}\nfunction findAnyReprints(newPath, oldPath, reprints) {\n var newNode = newPath.getValue();\n var oldNode = oldPath.getValue();\n if (newNode === oldNode)\n return true;\n if (isArray.check(newNode))\n return findArrayReprints(newPath, oldPath, reprints);\n if (isObject.check(newNode))\n return findObjectReprints(newPath, oldPath, reprints);\n return false;\n}\nfunction findArrayReprints(newPath, oldPath, reprints) {\n var newNode = newPath.getValue();\n var oldNode = oldPath.getValue();\n if (newNode === oldNode ||\n newPath.valueIsDuplicate() ||\n oldPath.valueIsDuplicate()) {\n return true;\n }\n isArray.assert(newNode);\n var len = newNode.length;\n if (!(isArray.check(oldNode) && oldNode.length === len))\n return false;\n for (var i = 0; i < len; ++i) {\n newPath.stack.push(i, newNode[i]);\n oldPath.stack.push(i, oldNode[i]);\n var canReprint = findAnyReprints(newPath, oldPath, reprints);\n newPath.stack.length -= 2;\n oldPath.stack.length -= 2;\n if (!canReprint) {\n return false;\n }\n }\n return true;\n}\nfunction findObjectReprints(newPath, oldPath, reprints) {\n var newNode = newPath.getValue();\n isObject.assert(newNode);\n if (newNode.original === null) {\n // If newNode.original node was set to null, reprint the node.\n return false;\n }\n var oldNode = oldPath.getValue();\n if (!isObject.check(oldNode))\n return false;\n if (newNode === oldNode ||\n newPath.valueIsDuplicate() ||\n oldPath.valueIsDuplicate()) {\n return true;\n }\n if (Printable.check(newNode)) {\n if (!Printable.check(oldNode)) {\n return false;\n }\n var newParentNode = newPath.getParentNode();\n var oldParentNode = oldPath.getParentNode();\n if (oldParentNode !== null &&\n oldParentNode.type === \"FunctionTypeAnnotation\" &&\n newParentNode !== null &&\n newParentNode.type === \"FunctionTypeAnnotation\") {\n var oldNeedsParens = oldParentNode.params.length !== 1 || !!oldParentNode.params[0].name;\n var newNeedParens = newParentNode.params.length !== 1 || !!newParentNode.params[0].name;\n if (!oldNeedsParens && newNeedParens) {\n return false;\n }\n }\n // Here we need to decide whether the reprinted code for newNode is\n // appropriate for patching into the location of oldNode.\n if (newNode.type === oldNode.type) {\n var childReprints = [];\n if (findChildReprints(newPath, oldPath, childReprints)) {\n reprints.push.apply(reprints, childReprints);\n }\n else if (oldNode.loc) {\n // If we have no .loc information for oldNode, then we won't be\n // able to reprint it.\n reprints.push({\n oldPath: oldPath.copy(),\n newPath: newPath.copy(),\n });\n }\n else {\n return false;\n }\n return true;\n }\n if (Expression.check(newNode) &&\n Expression.check(oldNode) &&\n // If we have no .loc information for oldNode, then we won't be\n // able to reprint it.\n oldNode.loc) {\n // If both nodes are subtypes of Expression, then we should be able\n // to fill the location occupied by the old node with code printed\n // for the new node with no ill consequences.\n reprints.push({\n oldPath: oldPath.copy(),\n newPath: newPath.copy(),\n });\n return true;\n }\n // The nodes have different types, and at least one of the types is\n // not a subtype of the Expression type, so we cannot safely assume\n // the nodes are syntactically interchangeable.\n return false;\n }\n return findChildReprints(newPath, oldPath, reprints);\n}\nfunction findChildReprints(newPath, oldPath, reprints) {\n var newNode = newPath.getValue();\n var oldNode = oldPath.getValue();\n isObject.assert(newNode);\n isObject.assert(oldNode);\n if (newNode.original === null) {\n // If newNode.original node was set to null, reprint the node.\n return false;\n }\n // If this node needs parentheses and will not be wrapped with\n // parentheses when reprinted, then return false to skip reprinting and\n // let it be printed generically.\n if (newPath.needsParens() && !oldPath.hasParens()) {\n return false;\n }\n var keys = (0, util_1.getUnionOfKeys)(oldNode, newNode);\n if (oldNode.type === \"File\" || newNode.type === \"File\") {\n // Don't bother traversing file.tokens, an often very large array\n // returned by Babylon, and useless for our purposes.\n delete keys.tokens;\n }\n // Don't bother traversing .loc objects looking for reprintable nodes.\n delete keys.loc;\n var originalReprintCount = reprints.length;\n for (var k in keys) {\n if (k.charAt(0) === \"_\") {\n // Ignore \"private\" AST properties added by e.g. Babel plugins and\n // parsers like Babylon.\n continue;\n }\n newPath.stack.push(k, types.getFieldValue(newNode, k));\n oldPath.stack.push(k, types.getFieldValue(oldNode, k));\n var canReprint = findAnyReprints(newPath, oldPath, reprints);\n newPath.stack.length -= 2;\n oldPath.stack.length -= 2;\n if (!canReprint) {\n return false;\n }\n }\n // Return statements might end up running into ASI issues due to\n // comments inserted deep within the tree, so reprint them if anything\n // changed within them.\n if (ReturnStatement.check(newPath.getNode()) &&\n reprints.length > originalReprintCount) {\n return false;\n }\n return true;\n}\n",
14
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Printer = void 0;\nvar tslib_1 = require(\"tslib\");\nvar tiny_invariant_1 = tslib_1.__importDefault(require(\"tiny-invariant\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nvar comments_1 = require(\"./comments\");\nvar fast_path_1 = tslib_1.__importDefault(require(\"./fast-path\"));\nvar lines_1 = require(\"./lines\");\nvar options_1 = require(\"./options\");\nvar patcher_1 = require(\"./patcher\");\nvar util = tslib_1.__importStar(require(\"./util\"));\nvar namedTypes = types.namedTypes;\nvar isString = types.builtInTypes.string;\nvar isObject = types.builtInTypes.object;\nvar PrintResult = function PrintResult(code, sourceMap) {\n (0, tiny_invariant_1.default)(this instanceof PrintResult);\n isString.assert(code);\n this.code = code;\n if (sourceMap) {\n isObject.assert(sourceMap);\n this.map = sourceMap;\n }\n};\nvar PRp = PrintResult.prototype;\nvar warnedAboutToString = false;\nPRp.toString = function () {\n if (!warnedAboutToString) {\n console.warn(\"Deprecation warning: recast.print now returns an object with \" +\n \"a .code property. You appear to be treating the object as a \" +\n \"string, which might still work but is strongly discouraged.\");\n warnedAboutToString = true;\n }\n return this.code;\n};\nvar emptyPrintResult = new PrintResult(\"\");\nvar Printer = function Printer(config) {\n (0, tiny_invariant_1.default)(this instanceof Printer);\n var explicitTabWidth = config && config.tabWidth;\n config = (0, options_1.normalize)(config);\n // It's common for client code to pass the same options into both\n // recast.parse and recast.print, but the Printer doesn't need (and\n // can be confused by) config.sourceFileName, so we null it out.\n config.sourceFileName = null;\n // Non-destructively modifies options with overrides, and returns a\n // new print function that uses the modified options.\n function makePrintFunctionWith(options, overrides) {\n options = Object.assign({}, options, overrides);\n return function (path) { return print(path, options); };\n }\n function print(path, options) {\n (0, tiny_invariant_1.default)(path instanceof fast_path_1.default);\n options = options || {};\n if (options.includeComments) {\n return (0, comments_1.printComments)(path, makePrintFunctionWith(options, {\n includeComments: false,\n }));\n }\n var oldTabWidth = config.tabWidth;\n if (!explicitTabWidth) {\n var loc = path.getNode().loc;\n if (loc && loc.lines && loc.lines.guessTabWidth) {\n config.tabWidth = loc.lines.guessTabWidth();\n }\n }\n var reprinter = (0, patcher_1.getReprinter)(path);\n var lines = reprinter\n ? // Since the print function that we pass to the reprinter will\n // be used to print \"new\" nodes, it's tempting to think we\n // should pass printRootGenerically instead of print, to avoid\n // calling maybeReprint again, but that would be a mistake\n // because the new nodes might not be entirely new, but merely\n // moved from elsewhere in the AST. The print function is the\n // right choice because it gives us the opportunity to reprint\n // such nodes using their original source.\n reprinter(print)\n : genericPrint(path, config, options, makePrintFunctionWith(options, {\n includeComments: true,\n avoidRootParens: false,\n }));\n config.tabWidth = oldTabWidth;\n return lines;\n }\n this.print = function (ast) {\n if (!ast) {\n return emptyPrintResult;\n }\n var lines = print(fast_path_1.default.from(ast), {\n includeComments: true,\n avoidRootParens: false,\n });\n return new PrintResult(lines.toString(config), util.composeSourceMaps(config.inputSourceMap, lines.getSourceMap(config.sourceMapName, config.sourceRoot)));\n };\n this.printGenerically = function (ast) {\n if (!ast) {\n return emptyPrintResult;\n }\n // Print the entire AST generically.\n function printGenerically(path) {\n return (0, comments_1.printComments)(path, function (path) {\n return genericPrint(path, config, {\n includeComments: true,\n avoidRootParens: false,\n }, printGenerically);\n });\n }\n var path = fast_path_1.default.from(ast);\n var oldReuseWhitespace = config.reuseWhitespace;\n // Do not reuse whitespace (or anything else, for that matter)\n // when printing generically.\n config.reuseWhitespace = false;\n // TODO Allow printing of comments?\n var pr = new PrintResult(printGenerically(path).toString(config));\n config.reuseWhitespace = oldReuseWhitespace;\n return pr;\n };\n};\nexports.Printer = Printer;\nfunction genericPrint(path, config, options, printPath) {\n (0, tiny_invariant_1.default)(path instanceof fast_path_1.default);\n var node = path.getValue();\n var parts = [];\n var linesWithoutParens = genericPrintNoParens(path, config, printPath);\n if (!node || linesWithoutParens.isEmpty()) {\n return linesWithoutParens;\n }\n var shouldAddParens = false;\n var decoratorsLines = printDecorators(path, printPath);\n if (decoratorsLines.isEmpty()) {\n // Nodes with decorators can't have parentheses, so we can avoid\n // computing path.needsParens() except in this case.\n if (!options.avoidRootParens) {\n shouldAddParens = path.needsParens();\n }\n }\n else {\n parts.push(decoratorsLines);\n }\n if (shouldAddParens) {\n parts.unshift(\"(\");\n }\n parts.push(linesWithoutParens);\n if (shouldAddParens) {\n parts.push(\")\");\n }\n return (0, lines_1.concat)(parts);\n}\n// Note that the `options` parameter of this function is what other\n// functions in this file call the `config` object (that is, the\n// configuration object originally passed into the Printer constructor).\n// Its properties are documented in lib/options.js.\nfunction genericPrintNoParens(path, options, print) {\n var _a, _b, _c;\n var n = path.getValue();\n if (!n) {\n return (0, lines_1.fromString)(\"\");\n }\n if (typeof n === \"string\") {\n return (0, lines_1.fromString)(n, options);\n }\n namedTypes.Printable.assert(n);\n var parts = [];\n switch (n.type) {\n case \"File\":\n return path.call(print, \"program\");\n case \"Program\":\n // Babel 6\n if (n.directives) {\n path.each(function (childPath) {\n parts.push(print(childPath), \";\\n\");\n }, \"directives\");\n }\n if (n.interpreter) {\n parts.push(path.call(print, \"interpreter\"));\n }\n parts.push(path.call(function (bodyPath) { return printStatementSequence(bodyPath, options, print); }, \"body\"));\n return (0, lines_1.concat)(parts);\n case \"Noop\": // Babel extension.\n case \"EmptyStatement\":\n return (0, lines_1.fromString)(\"\");\n case \"ExpressionStatement\":\n return (0, lines_1.concat)([path.call(print, \"expression\"), \";\"]);\n case \"ParenthesizedExpression\": // Babel extension.\n return (0, lines_1.concat)([\"(\", path.call(print, \"expression\"), \")\"]);\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"AssignmentExpression\":\n return (0, lines_1.fromString)(\" \").join([\n path.call(print, \"left\"),\n n.operator,\n path.call(print, \"right\"),\n ]);\n case \"AssignmentPattern\":\n return (0, lines_1.concat)([\n path.call(print, \"left\"),\n \" = \",\n path.call(print, \"right\"),\n ]);\n case \"MemberExpression\":\n case \"OptionalMemberExpression\": {\n parts.push(path.call(print, \"object\"));\n var property = path.call(print, \"property\");\n // Like n.optional, except with defaults applied, so optional\n // defaults to true for OptionalMemberExpression nodes.\n var optional = types.getFieldValue(n, \"optional\");\n if (n.computed) {\n parts.push(optional ? \"?.[\" : \"[\", property, \"]\");\n }\n else {\n parts.push(optional ? \"?.\" : \".\", property);\n }\n return (0, lines_1.concat)(parts);\n }\n case \"ChainExpression\":\n return path.call(print, \"expression\");\n case \"MetaProperty\":\n return (0, lines_1.concat)([\n path.call(print, \"meta\"),\n \".\",\n path.call(print, \"property\"),\n ]);\n case \"BindExpression\":\n if (n.object) {\n parts.push(path.call(print, \"object\"));\n }\n parts.push(\"::\", path.call(print, \"callee\"));\n return (0, lines_1.concat)(parts);\n case \"Path\":\n return (0, lines_1.fromString)(\".\").join(n.body);\n case \"Identifier\":\n return (0, lines_1.concat)([\n (0, lines_1.fromString)(n.name, options),\n n.optional ? \"?\" : \"\",\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"SpreadElement\":\n case \"SpreadElementPattern\":\n case \"RestProperty\": // Babel 6 for ObjectPattern\n case \"SpreadProperty\":\n case \"SpreadPropertyPattern\":\n case \"ObjectTypeSpreadProperty\":\n case \"RestElement\":\n return (0, lines_1.concat)([\n \"...\",\n path.call(print, \"argument\"),\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"TSDeclareFunction\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n if (n.async) {\n parts.push(\"async \");\n }\n parts.push(\"function\");\n if (n.generator)\n parts.push(\"*\");\n if (n.id) {\n parts.push(\" \", path.call(print, \"id\"), path.call(print, \"typeParameters\"));\n }\n else {\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n }\n parts.push(\"(\", printFunctionParams(path, options, print), \")\", path.call(print, \"returnType\"));\n if (n.body) {\n parts.push(\" \", path.call(print, \"body\"));\n }\n return (0, lines_1.concat)(parts);\n case \"ArrowFunctionExpression\":\n if (n.async) {\n parts.push(\"async \");\n }\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n if (!options.arrowParensAlways &&\n n.params.length === 1 &&\n !n.rest &&\n n.params[0].type === \"Identifier\" &&\n !n.params[0].typeAnnotation &&\n !n.returnType) {\n parts.push(path.call(print, \"params\", 0));\n }\n else {\n parts.push(\"(\", printFunctionParams(path, options, print), \")\", path.call(print, \"returnType\"));\n }\n parts.push(\" => \", path.call(print, \"body\"));\n return (0, lines_1.concat)(parts);\n case \"MethodDefinition\":\n return printMethod(path, options, print);\n case \"YieldExpression\":\n parts.push(\"yield\");\n if (n.delegate)\n parts.push(\"*\");\n if (n.argument)\n parts.push(\" \", path.call(print, \"argument\"));\n return (0, lines_1.concat)(parts);\n case \"AwaitExpression\":\n parts.push(\"await\");\n if (n.all)\n parts.push(\"*\");\n if (n.argument)\n parts.push(\" \", path.call(print, \"argument\"));\n return (0, lines_1.concat)(parts);\n case \"ModuleExpression\":\n return (0, lines_1.concat)([\n \"module {\\n\",\n path.call(print, \"body\").indent(options.tabWidth),\n \"\\n}\",\n ]);\n case \"ModuleDeclaration\":\n parts.push(\"module\", path.call(print, \"id\"));\n if (n.source) {\n (0, tiny_invariant_1.default)(!n.body);\n parts.push(\"from\", path.call(print, \"source\"));\n }\n else {\n parts.push(path.call(print, \"body\"));\n }\n return (0, lines_1.fromString)(\" \").join(parts);\n case \"ImportSpecifier\":\n if (n.importKind && n.importKind !== \"value\") {\n parts.push(n.importKind + \" \");\n }\n if (n.imported) {\n parts.push(path.call(print, \"imported\"));\n if (n.local && n.local.name !== n.imported.name) {\n parts.push(\" as \", path.call(print, \"local\"));\n }\n }\n else if (n.id) {\n parts.push(path.call(print, \"id\"));\n if (n.name) {\n parts.push(\" as \", path.call(print, \"name\"));\n }\n }\n return (0, lines_1.concat)(parts);\n case \"ExportSpecifier\":\n if (n.exportKind && n.exportKind !== \"value\") {\n parts.push(n.exportKind + \" \");\n }\n if (n.local) {\n parts.push(path.call(print, \"local\"));\n if (n.exported && n.exported.name !== n.local.name) {\n parts.push(\" as \", path.call(print, \"exported\"));\n }\n }\n else if (n.id) {\n parts.push(path.call(print, \"id\"));\n if (n.name) {\n parts.push(\" as \", path.call(print, \"name\"));\n }\n }\n return (0, lines_1.concat)(parts);\n case \"ExportBatchSpecifier\":\n return (0, lines_1.fromString)(\"*\");\n case \"ImportNamespaceSpecifier\":\n parts.push(\"* as \");\n if (n.local) {\n parts.push(path.call(print, \"local\"));\n }\n else if (n.id) {\n parts.push(path.call(print, \"id\"));\n }\n return (0, lines_1.concat)(parts);\n case \"ImportDefaultSpecifier\":\n if (n.local) {\n return path.call(print, \"local\");\n }\n return path.call(print, \"id\");\n case \"TSExportAssignment\":\n return (0, lines_1.concat)([\"export = \", path.call(print, \"expression\")]);\n case \"ExportDeclaration\":\n case \"ExportDefaultDeclaration\":\n case \"ExportNamedDeclaration\":\n return printExportDeclaration(path, options, print);\n case \"ExportAllDeclaration\":\n parts.push(\"export *\");\n if (n.exported) {\n parts.push(\" as \", path.call(print, \"exported\"));\n }\n parts.push(\" from \", path.call(print, \"source\"), \";\");\n return (0, lines_1.concat)(parts);\n case \"TSNamespaceExportDeclaration\":\n parts.push(\"export as namespace \", path.call(print, \"id\"));\n return maybeAddSemicolon((0, lines_1.concat)(parts));\n case \"ExportNamespaceSpecifier\":\n return (0, lines_1.concat)([\"* as \", path.call(print, \"exported\")]);\n case \"ExportDefaultSpecifier\":\n return path.call(print, \"exported\");\n case \"Import\":\n return (0, lines_1.fromString)(\"import\", options);\n // Recast and ast-types currently support dynamic import(...) using\n // either this dedicated ImportExpression type or a CallExpression\n // whose callee has type Import.\n // https://github.com/benjamn/ast-types/pull/365#issuecomment-605214486\n case \"ImportExpression\":\n return (0, lines_1.concat)([\"import(\", path.call(print, \"source\"), \")\"]);\n case \"ImportDeclaration\": {\n parts.push(\"import \");\n if (n.importKind && n.importKind !== \"value\") {\n parts.push(n.importKind + \" \");\n }\n if (n.specifiers && n.specifiers.length > 0) {\n var unbracedSpecifiers_1 = [];\n var bracedSpecifiers_1 = [];\n path.each(function (specifierPath) {\n var spec = specifierPath.getValue();\n if (spec.type === \"ImportSpecifier\") {\n bracedSpecifiers_1.push(print(specifierPath));\n }\n else if (spec.type === \"ImportDefaultSpecifier\" ||\n spec.type === \"ImportNamespaceSpecifier\") {\n unbracedSpecifiers_1.push(print(specifierPath));\n }\n }, \"specifiers\");\n unbracedSpecifiers_1.forEach(function (lines, i) {\n if (i > 0) {\n parts.push(\", \");\n }\n parts.push(lines);\n });\n if (bracedSpecifiers_1.length > 0) {\n var lines = (0, lines_1.fromString)(\", \").join(bracedSpecifiers_1);\n if (lines.getLineLength(1) > options.wrapColumn) {\n lines = (0, lines_1.concat)([\n (0, lines_1.fromString)(\",\\n\").join(bracedSpecifiers_1).indent(options.tabWidth),\n \",\",\n ]);\n }\n if (unbracedSpecifiers_1.length > 0) {\n parts.push(\", \");\n }\n if (lines.length > 1) {\n parts.push(\"{\\n\", lines, \"\\n}\");\n }\n else if (options.objectCurlySpacing) {\n parts.push(\"{ \", lines, \" }\");\n }\n else {\n parts.push(\"{\", lines, \"}\");\n }\n }\n parts.push(\" from \");\n }\n parts.push(path.call(print, \"source\"), maybePrintImportAssertions(path, options, print), \";\");\n return (0, lines_1.concat)(parts);\n }\n case \"ImportAttribute\":\n return (0, lines_1.concat)([path.call(print, \"key\"), \": \", path.call(print, \"value\")]);\n case \"StaticBlock\":\n parts.push(\"static \");\n // Intentionally fall through to BlockStatement below.\n case \"BlockStatement\": {\n var naked_1 = path.call(function (bodyPath) { return printStatementSequence(bodyPath, options, print); }, \"body\");\n if (naked_1.isEmpty()) {\n if (!n.directives || n.directives.length === 0) {\n parts.push(\"{}\");\n return (0, lines_1.concat)(parts);\n }\n }\n parts.push(\"{\\n\");\n // Babel 6\n if (n.directives) {\n path.each(function (childPath) {\n parts.push(maybeAddSemicolon(print(childPath).indent(options.tabWidth)), n.directives.length > 1 || !naked_1.isEmpty() ? \"\\n\" : \"\");\n }, \"directives\");\n }\n parts.push(naked_1.indent(options.tabWidth));\n parts.push(\"\\n}\");\n return (0, lines_1.concat)(parts);\n }\n case \"ReturnStatement\": {\n parts.push(\"return\");\n if (n.argument) {\n var argIsJsxElement = ((_a = namedTypes.JSXElement) === null || _a === void 0 ? void 0 : _a.check(n.argument)) ||\n ((_b = namedTypes.JSXFragment) === null || _b === void 0 ? void 0 : _b.check(n.argument));\n var argLines = path.call(print, \"argument\");\n if (argLines.startsWithComment() ||\n (argLines.length > 1 && argIsJsxElement)) {\n // Babel: regenerate parenthesized jsxElements so we don't double parentheses\n if (argIsJsxElement && ((_c = n.argument.extra) === null || _c === void 0 ? void 0 : _c.parenthesized)) {\n n.argument.extra.parenthesized = false;\n argLines = path.call(print, \"argument\");\n n.argument.extra.parenthesized = true;\n }\n parts.push(\" \", (0, lines_1.concat)([\"(\\n\", argLines]).indentTail(options.tabWidth), \"\\n)\");\n }\n else {\n parts.push(\" \", argLines);\n }\n }\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n }\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n parts.push(path.call(print, \"callee\"));\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n if (n.typeArguments) {\n parts.push(path.call(print, \"typeArguments\"));\n }\n // Like n.optional, but defaults to true for OptionalCallExpression\n // nodes that are missing an n.optional property (unusual),\n // according to the OptionalCallExpression definition in ast-types.\n if (types.getFieldValue(n, \"optional\")) {\n parts.push(\"?.\");\n }\n parts.push(printArgumentsList(path, options, print));\n return (0, lines_1.concat)(parts);\n case \"RecordExpression\":\n parts.push(\"#\");\n // Intentionally fall through to printing the object literal...\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n case \"ObjectTypeAnnotation\": {\n var isTypeAnnotation_1 = n.type === \"ObjectTypeAnnotation\";\n var separator_1 = options.flowObjectCommas\n ? \",\"\n : isTypeAnnotation_1\n ? \";\"\n : \",\";\n var fields = [];\n var allowBreak_1 = false;\n if (isTypeAnnotation_1) {\n fields.push(\"indexers\", \"callProperties\");\n if (n.internalSlots != null) {\n fields.push(\"internalSlots\");\n }\n }\n fields.push(\"properties\");\n var len_1 = 0;\n fields.forEach(function (field) {\n len_1 += n[field].length;\n });\n var oneLine_1 = (isTypeAnnotation_1 && len_1 === 1) || len_1 === 0;\n var leftBrace = n.exact ? \"{|\" : \"{\";\n var rightBrace = n.exact ? \"|}\" : \"}\";\n parts.push(oneLine_1 ? leftBrace : leftBrace + \"\\n\");\n var leftBraceIndex = parts.length - 1;\n var i_1 = 0;\n fields.forEach(function (field) {\n path.each(function (childPath) {\n var lines = print(childPath);\n if (!oneLine_1) {\n lines = lines.indent(options.tabWidth);\n }\n var multiLine = !isTypeAnnotation_1 && lines.length > 1;\n if (multiLine && allowBreak_1) {\n // Similar to the logic for BlockStatement.\n parts.push(\"\\n\");\n }\n parts.push(lines);\n if (i_1 < len_1 - 1) {\n // Add an extra line break if the previous object property\n // had a multi-line value.\n parts.push(separator_1 + (multiLine ? \"\\n\\n\" : \"\\n\"));\n allowBreak_1 = !multiLine;\n }\n else if (len_1 !== 1 && isTypeAnnotation_1) {\n parts.push(separator_1);\n }\n else if (!oneLine_1 &&\n util.isTrailingCommaEnabled(options, \"objects\") &&\n childPath.getValue().type !== \"RestElement\") {\n parts.push(separator_1);\n }\n i_1++;\n }, field);\n });\n if (n.inexact) {\n var line = (0, lines_1.fromString)(\"...\", options);\n if (oneLine_1) {\n if (len_1 > 0) {\n parts.push(separator_1, \" \");\n }\n parts.push(line);\n }\n else {\n // No trailing separator after ... to maintain parity with prettier.\n parts.push(\"\\n\", line.indent(options.tabWidth));\n }\n }\n parts.push(oneLine_1 ? rightBrace : \"\\n\" + rightBrace);\n if (i_1 !== 0 && oneLine_1 && options.objectCurlySpacing) {\n parts[leftBraceIndex] = leftBrace + \" \";\n parts[parts.length - 1] = \" \" + rightBrace;\n }\n if (n.typeAnnotation) {\n parts.push(path.call(print, \"typeAnnotation\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"PropertyPattern\":\n return (0, lines_1.concat)([\n path.call(print, \"key\"),\n \": \",\n path.call(print, \"pattern\"),\n ]);\n case \"ObjectProperty\": // Babel 6\n case \"Property\": {\n // Non-standard AST node type.\n if (n.method || n.kind === \"get\" || n.kind === \"set\") {\n return printMethod(path, options, print);\n }\n if (n.shorthand && n.value.type === \"AssignmentPattern\") {\n return path.call(print, \"value\");\n }\n var key = path.call(print, \"key\");\n if (n.computed) {\n parts.push(\"[\", key, \"]\");\n }\n else {\n parts.push(key);\n }\n if (!n.shorthand || n.key.name !== n.value.name) {\n parts.push(\": \", path.call(print, \"value\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"ClassMethod\": // Babel 6\n case \"ObjectMethod\": // Babel 6\n case \"ClassPrivateMethod\":\n case \"TSDeclareMethod\":\n return printMethod(path, options, print);\n case \"PrivateName\":\n return (0, lines_1.concat)([\"#\", path.call(print, \"id\")]);\n case \"Decorator\":\n return (0, lines_1.concat)([\"@\", path.call(print, \"expression\")]);\n case \"TupleExpression\":\n parts.push(\"#\");\n // Intentionally fall through to printing the tuple elements...\n case \"ArrayExpression\":\n case \"ArrayPattern\": {\n var elems = n.elements;\n var len_2 = elems.length;\n var printed_1 = path.map(print, \"elements\");\n var joined = (0, lines_1.fromString)(\", \").join(printed_1);\n var oneLine_2 = joined.getLineLength(1) <= options.wrapColumn;\n if (oneLine_2) {\n if (options.arrayBracketSpacing) {\n parts.push(\"[ \");\n }\n else {\n parts.push(\"[\");\n }\n }\n else {\n parts.push(\"[\\n\");\n }\n path.each(function (elemPath) {\n var i = elemPath.getName();\n var elem = elemPath.getValue();\n if (!elem) {\n // If the array expression ends with a hole, that hole\n // will be ignored by the interpreter, but if it ends with\n // two (or more) holes, we need to write out two (or more)\n // commas so that the resulting code is interpreted with\n // both (all) of the holes.\n parts.push(\",\");\n }\n else {\n var lines = printed_1[i];\n if (oneLine_2) {\n if (i > 0)\n parts.push(\" \");\n }\n else {\n lines = lines.indent(options.tabWidth);\n }\n parts.push(lines);\n if (i < len_2 - 1 ||\n (!oneLine_2 && util.isTrailingCommaEnabled(options, \"arrays\")))\n parts.push(\",\");\n if (!oneLine_2)\n parts.push(\"\\n\");\n }\n }, \"elements\");\n if (oneLine_2 && options.arrayBracketSpacing) {\n parts.push(\" ]\");\n }\n else {\n parts.push(\"]\");\n }\n if (n.typeAnnotation) {\n parts.push(path.call(print, \"typeAnnotation\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"SequenceExpression\":\n return (0, lines_1.fromString)(\", \").join(path.map(print, \"expressions\"));\n case \"ThisExpression\":\n return (0, lines_1.fromString)(\"this\");\n case \"Super\":\n return (0, lines_1.fromString)(\"super\");\n case \"NullLiteral\": // Babel 6 Literal split\n return (0, lines_1.fromString)(\"null\");\n case \"RegExpLiteral\": // Babel 6 Literal split\n return (0, lines_1.fromString)(getPossibleRaw(n) || \"/\".concat(n.pattern, \"/\").concat(n.flags || \"\"), options);\n case \"BigIntLiteral\": // Babel 7 Literal split\n return (0, lines_1.fromString)(getPossibleRaw(n) || n.value + \"n\", options);\n case \"NumericLiteral\": // Babel 6 Literal Split\n return (0, lines_1.fromString)(getPossibleRaw(n) || n.value, options);\n case \"DecimalLiteral\":\n return (0, lines_1.fromString)(getPossibleRaw(n) || n.value + \"m\", options);\n case \"StringLiteral\":\n return (0, lines_1.fromString)(nodeStr(n.value, options));\n case \"BooleanLiteral\": // Babel 6 Literal split\n case \"Literal\":\n return (0, lines_1.fromString)(getPossibleRaw(n) ||\n (typeof n.value === \"string\" ? nodeStr(n.value, options) : n.value), options);\n case \"Directive\": // Babel 6\n return path.call(print, \"value\");\n case \"DirectiveLiteral\": // Babel 6\n return (0, lines_1.fromString)(getPossibleRaw(n) || nodeStr(n.value, options), options);\n case \"InterpreterDirective\":\n return (0, lines_1.fromString)(\"#!\".concat(n.value, \"\\n\"), options);\n case \"ModuleSpecifier\":\n if (n.local) {\n throw new Error(\"The ESTree ModuleSpecifier type should be abstract\");\n }\n // The Esprima ModuleSpecifier type is just a string-valued\n // Literal identifying the imported-from module.\n return (0, lines_1.fromString)(nodeStr(n.value, options), options);\n case \"UnaryExpression\":\n parts.push(n.operator);\n if (/[a-z]$/.test(n.operator))\n parts.push(\" \");\n parts.push(path.call(print, \"argument\"));\n return (0, lines_1.concat)(parts);\n case \"UpdateExpression\":\n parts.push(path.call(print, \"argument\"), n.operator);\n if (n.prefix)\n parts.reverse();\n return (0, lines_1.concat)(parts);\n case \"ConditionalExpression\":\n return (0, lines_1.concat)([\n path.call(print, \"test\"),\n \" ? \",\n path.call(print, \"consequent\"),\n \" : \",\n path.call(print, \"alternate\"),\n ]);\n case \"NewExpression\": {\n parts.push(\"new \", path.call(print, \"callee\"));\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n if (n.typeArguments) {\n parts.push(path.call(print, \"typeArguments\"));\n }\n var args = n.arguments;\n if (args) {\n parts.push(printArgumentsList(path, options, print));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"VariableDeclaration\": {\n if (n.declare) {\n parts.push(\"declare \");\n }\n parts.push(n.kind, \" \");\n var maxLen_1 = 0;\n var printed = path.map(function (childPath) {\n var lines = print(childPath);\n maxLen_1 = Math.max(lines.length, maxLen_1);\n return lines;\n }, \"declarations\");\n if (maxLen_1 === 1) {\n parts.push((0, lines_1.fromString)(\", \").join(printed));\n }\n else if (printed.length > 1) {\n parts.push((0, lines_1.fromString)(\",\\n\")\n .join(printed)\n .indentTail(n.kind.length + 1));\n }\n else {\n parts.push(printed[0]);\n }\n // We generally want to terminate all variable declarations with a\n // semicolon, except when they are children of for loops.\n var parentNode = path.getParentNode();\n if (!namedTypes.ForStatement.check(parentNode) &&\n !namedTypes.ForInStatement.check(parentNode) &&\n !(namedTypes.ForOfStatement &&\n namedTypes.ForOfStatement.check(parentNode)) &&\n !(namedTypes.ForAwaitStatement &&\n namedTypes.ForAwaitStatement.check(parentNode))) {\n parts.push(\";\");\n }\n return (0, lines_1.concat)(parts);\n }\n case \"VariableDeclarator\":\n return n.init\n ? (0, lines_1.fromString)(\" = \").join([\n path.call(print, \"id\"),\n path.call(print, \"init\"),\n ])\n : path.call(print, \"id\");\n case \"WithStatement\":\n return (0, lines_1.concat)([\n \"with (\",\n path.call(print, \"object\"),\n \") \",\n path.call(print, \"body\"),\n ]);\n case \"IfStatement\": {\n var con = adjustClause(path.call(print, \"consequent\"), options);\n parts.push(\"if (\", path.call(print, \"test\"), \")\", con);\n if (n.alternate)\n parts.push(endsWithBrace(con) ? \" else\" : \"\\nelse\", adjustClause(path.call(print, \"alternate\"), options));\n return (0, lines_1.concat)(parts);\n }\n case \"ForStatement\": {\n // TODO Get the for (;;) case right.\n var init = path.call(print, \"init\");\n var sep = init.length > 1 ? \";\\n\" : \"; \";\n var forParen = \"for (\";\n var indented = (0, lines_1.fromString)(sep)\n .join([init, path.call(print, \"test\"), path.call(print, \"update\")])\n .indentTail(forParen.length);\n var head = (0, lines_1.concat)([forParen, indented, \")\"]);\n var clause = adjustClause(path.call(print, \"body\"), options);\n parts.push(head);\n if (head.length > 1) {\n parts.push(\"\\n\");\n clause = clause.trimLeft();\n }\n parts.push(clause);\n return (0, lines_1.concat)(parts);\n }\n case \"WhileStatement\":\n return (0, lines_1.concat)([\n \"while (\",\n path.call(print, \"test\"),\n \")\",\n adjustClause(path.call(print, \"body\"), options),\n ]);\n case \"ForInStatement\":\n // Note: esprima can't actually parse \"for each (\".\n return (0, lines_1.concat)([\n n.each ? \"for each (\" : \"for (\",\n path.call(print, \"left\"),\n \" in \",\n path.call(print, \"right\"),\n \")\",\n adjustClause(path.call(print, \"body\"), options),\n ]);\n case \"ForOfStatement\":\n case \"ForAwaitStatement\":\n parts.push(\"for \");\n if (n.await || n.type === \"ForAwaitStatement\") {\n parts.push(\"await \");\n }\n parts.push(\"(\", path.call(print, \"left\"), \" of \", path.call(print, \"right\"), \")\", adjustClause(path.call(print, \"body\"), options));\n return (0, lines_1.concat)(parts);\n case \"DoWhileStatement\": {\n var doBody = (0, lines_1.concat)([\n \"do\",\n adjustClause(path.call(print, \"body\"), options),\n ]);\n parts.push(doBody);\n if (endsWithBrace(doBody))\n parts.push(\" while\");\n else\n parts.push(\"\\nwhile\");\n parts.push(\" (\", path.call(print, \"test\"), \");\");\n return (0, lines_1.concat)(parts);\n }\n case \"DoExpression\": {\n var statements = path.call(function (bodyPath) { return printStatementSequence(bodyPath, options, print); }, \"body\");\n return (0, lines_1.concat)([\"do {\\n\", statements.indent(options.tabWidth), \"\\n}\"]);\n }\n case \"BreakStatement\":\n parts.push(\"break\");\n if (n.label)\n parts.push(\" \", path.call(print, \"label\"));\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n case \"ContinueStatement\":\n parts.push(\"continue\");\n if (n.label)\n parts.push(\" \", path.call(print, \"label\"));\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n case \"LabeledStatement\":\n return (0, lines_1.concat)([\n path.call(print, \"label\"),\n \":\\n\",\n path.call(print, \"body\"),\n ]);\n case \"TryStatement\":\n parts.push(\"try \", path.call(print, \"block\"));\n if (n.handler) {\n parts.push(\" \", path.call(print, \"handler\"));\n }\n else if (n.handlers) {\n path.each(function (handlerPath) {\n parts.push(\" \", print(handlerPath));\n }, \"handlers\");\n }\n if (n.finalizer) {\n parts.push(\" finally \", path.call(print, \"finalizer\"));\n }\n return (0, lines_1.concat)(parts);\n case \"CatchClause\":\n parts.push(\"catch \");\n if (n.param) {\n parts.push(\"(\", path.call(print, \"param\"));\n }\n if (n.guard) {\n // Note: esprima does not recognize conditional catch clauses.\n parts.push(\" if \", path.call(print, \"guard\"));\n }\n if (n.param) {\n parts.push(\") \");\n }\n parts.push(path.call(print, \"body\"));\n return (0, lines_1.concat)(parts);\n case \"ThrowStatement\":\n return (0, lines_1.concat)([\"throw \", path.call(print, \"argument\"), \";\"]);\n case \"SwitchStatement\":\n return (0, lines_1.concat)([\n \"switch (\",\n path.call(print, \"discriminant\"),\n \") {\\n\",\n (0, lines_1.fromString)(\"\\n\").join(path.map(print, \"cases\")),\n \"\\n}\",\n ]);\n // Note: ignoring n.lexical because it has no printing consequences.\n case \"SwitchCase\":\n if (n.test)\n parts.push(\"case \", path.call(print, \"test\"), \":\");\n else\n parts.push(\"default:\");\n if (n.consequent.length > 0) {\n parts.push(\"\\n\", path\n .call(function (consequentPath) {\n return printStatementSequence(consequentPath, options, print);\n }, \"consequent\")\n .indent(options.tabWidth));\n }\n return (0, lines_1.concat)(parts);\n case \"DebuggerStatement\":\n return (0, lines_1.fromString)(\"debugger;\");\n // JSX extensions below.\n case \"JSXAttribute\":\n parts.push(path.call(print, \"name\"));\n if (n.value)\n parts.push(\"=\", path.call(print, \"value\"));\n return (0, lines_1.concat)(parts);\n case \"JSXIdentifier\":\n return (0, lines_1.fromString)(n.name, options);\n case \"JSXNamespacedName\":\n return (0, lines_1.fromString)(\":\").join([\n path.call(print, \"namespace\"),\n path.call(print, \"name\"),\n ]);\n case \"JSXMemberExpression\":\n return (0, lines_1.fromString)(\".\").join([\n path.call(print, \"object\"),\n path.call(print, \"property\"),\n ]);\n case \"JSXSpreadAttribute\":\n return (0, lines_1.concat)([\"{...\", path.call(print, \"argument\"), \"}\"]);\n case \"JSXSpreadChild\":\n return (0, lines_1.concat)([\"{...\", path.call(print, \"expression\"), \"}\"]);\n case \"JSXExpressionContainer\":\n return (0, lines_1.concat)([\"{\", path.call(print, \"expression\"), \"}\"]);\n case \"JSXElement\":\n case \"JSXFragment\": {\n var openingPropName = \"opening\" + (n.type === \"JSXElement\" ? \"Element\" : \"Fragment\");\n var closingPropName = \"closing\" + (n.type === \"JSXElement\" ? \"Element\" : \"Fragment\");\n var openingLines = path.call(print, openingPropName);\n if (n[openingPropName].selfClosing) {\n (0, tiny_invariant_1.default)(!n[closingPropName], \"unexpected \" +\n closingPropName +\n \" element in self-closing \" +\n n.type);\n return openingLines;\n }\n var childLines = (0, lines_1.concat)(path.map(function (childPath) {\n var child = childPath.getValue();\n if (namedTypes.Literal.check(child) &&\n typeof child.value === \"string\") {\n if (/\\S/.test(child.value)) {\n return child.value.replace(/^\\s+/g, \"\");\n }\n else if (/\\n/.test(child.value)) {\n return \"\\n\";\n }\n }\n return print(childPath);\n }, \"children\")).indentTail(options.tabWidth);\n var closingLines = path.call(print, closingPropName);\n return (0, lines_1.concat)([openingLines, childLines, closingLines]);\n }\n case \"JSXOpeningElement\": {\n parts.push(\"<\", path.call(print, \"name\"));\n var typeDefPart = path.call(print, \"typeParameters\");\n if (typeDefPart.length)\n parts.push(typeDefPart);\n var attrParts_1 = [];\n path.each(function (attrPath) {\n attrParts_1.push(\" \", print(attrPath));\n }, \"attributes\");\n var attrLines = (0, lines_1.concat)(attrParts_1);\n var needLineWrap = attrLines.length > 1 || attrLines.getLineLength(1) > options.wrapColumn;\n if (needLineWrap) {\n attrParts_1.forEach(function (part, i) {\n if (part === \" \") {\n (0, tiny_invariant_1.default)(i % 2 === 0);\n attrParts_1[i] = \"\\n\";\n }\n });\n attrLines = (0, lines_1.concat)(attrParts_1).indentTail(options.tabWidth);\n }\n parts.push(attrLines, n.selfClosing ? \" />\" : \">\");\n return (0, lines_1.concat)(parts);\n }\n case \"JSXClosingElement\":\n return (0, lines_1.concat)([\"</\", path.call(print, \"name\"), \">\"]);\n case \"JSXOpeningFragment\":\n return (0, lines_1.fromString)(\"<>\");\n case \"JSXClosingFragment\":\n return (0, lines_1.fromString)(\"</>\");\n case \"JSXText\":\n return (0, lines_1.fromString)(n.value, options);\n case \"JSXEmptyExpression\":\n return (0, lines_1.fromString)(\"\");\n case \"TypeAnnotatedIdentifier\":\n return (0, lines_1.concat)([\n path.call(print, \"annotation\"),\n \" \",\n path.call(print, \"identifier\"),\n ]);\n case \"ClassBody\":\n if (n.body.length === 0) {\n return (0, lines_1.fromString)(\"{}\");\n }\n return (0, lines_1.concat)([\n \"{\\n\",\n path\n .call(function (bodyPath) { return printStatementSequence(bodyPath, options, print); }, \"body\")\n .indent(options.tabWidth),\n \"\\n}\",\n ]);\n case \"ClassPropertyDefinition\":\n parts.push(\"static \", path.call(print, \"definition\"));\n if (!namedTypes.MethodDefinition.check(n.definition))\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n case \"ClassProperty\": {\n if (n.declare) {\n parts.push(\"declare \");\n }\n var access = n.accessibility || n.access;\n if (typeof access === \"string\") {\n parts.push(access, \" \");\n }\n if (n.static) {\n parts.push(\"static \");\n }\n if (n.abstract) {\n parts.push(\"abstract \");\n }\n if (n.readonly) {\n parts.push(\"readonly \");\n }\n var key = path.call(print, \"key\");\n if (n.computed) {\n key = (0, lines_1.concat)([\"[\", key, \"]\"]);\n }\n if (n.variance) {\n key = (0, lines_1.concat)([printVariance(path, print), key]);\n }\n parts.push(key);\n if (n.optional) {\n parts.push(\"?\");\n }\n if (n.definite) {\n parts.push(\"!\");\n }\n if (n.typeAnnotation) {\n parts.push(path.call(print, \"typeAnnotation\"));\n }\n if (n.value) {\n parts.push(\" = \", path.call(print, \"value\"));\n }\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n }\n case \"ClassPrivateProperty\":\n if (n.static) {\n parts.push(\"static \");\n }\n parts.push(path.call(print, \"key\"));\n if (n.typeAnnotation) {\n parts.push(path.call(print, \"typeAnnotation\"));\n }\n if (n.value) {\n parts.push(\" = \", path.call(print, \"value\"));\n }\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n case \"ClassAccessorProperty\": {\n parts.push.apply(parts, tslib_1.__spreadArray(tslib_1.__spreadArray([], printClassMemberModifiers(n), false), [\"accessor \"], false));\n if (n.computed) {\n parts.push(\"[\", path.call(print, \"key\"), \"]\");\n }\n else {\n parts.push(path.call(print, \"key\"));\n }\n if (n.optional) {\n parts.push(\"?\");\n }\n if (n.definite) {\n parts.push(\"!\");\n }\n if (n.typeAnnotation) {\n parts.push(path.call(print, \"typeAnnotation\"));\n }\n if (n.value) {\n parts.push(\" = \", path.call(print, \"value\"));\n }\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n }\n case \"ClassDeclaration\":\n case \"ClassExpression\":\n case \"DeclareClass\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n if (n.abstract) {\n parts.push(\"abstract \");\n }\n parts.push(\"class\");\n if (n.id) {\n parts.push(\" \", path.call(print, \"id\"));\n }\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n if (n.superClass) {\n // ClassDeclaration and ClassExpression only\n parts.push(\" extends \", path.call(print, \"superClass\"), path.call(print, \"superTypeParameters\"));\n }\n if (n.extends && n.extends.length > 0) {\n // DeclareClass only\n parts.push(\" extends \", (0, lines_1.fromString)(\", \").join(path.map(print, \"extends\")));\n }\n if (n[\"implements\"] && n[\"implements\"].length > 0) {\n parts.push(\" implements \", (0, lines_1.fromString)(\", \").join(path.map(print, \"implements\")));\n }\n parts.push(\" \", path.call(print, \"body\"));\n if (n.type === \"DeclareClass\") {\n return printFlowDeclaration(path, parts);\n }\n else {\n return (0, lines_1.concat)(parts);\n }\n case \"TemplateElement\":\n return (0, lines_1.fromString)(n.value.raw, options).lockIndentTail();\n case \"TemplateLiteral\": {\n var expressions_1 = path.map(print, \"expressions\");\n parts.push(\"`\");\n path.each(function (childPath) {\n var i = childPath.getName();\n parts.push(print(childPath));\n if (i < expressions_1.length) {\n parts.push(\"${\", expressions_1[i], \"}\");\n }\n }, \"quasis\");\n parts.push(\"`\");\n return (0, lines_1.concat)(parts).lockIndentTail();\n }\n case \"TaggedTemplateExpression\":\n parts.push(path.call(print, \"tag\"));\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n parts.push(path.call(print, \"quasi\"));\n return (0, lines_1.concat)(parts);\n // These types are unprintable because they serve as abstract\n // supertypes for other (printable) types.\n case \"Node\":\n case \"Printable\":\n case \"SourceLocation\":\n case \"Position\":\n case \"Statement\":\n case \"Function\":\n case \"Pattern\":\n case \"Expression\":\n case \"Declaration\":\n case \"Specifier\":\n case \"NamedSpecifier\":\n case \"Comment\": // Supertype of Block and Line\n case \"Flow\": // Supertype of all Flow AST node types\n case \"FlowType\": // Supertype of all Flow types\n case \"FlowPredicate\": // Supertype of InferredPredicate and DeclaredPredicate\n case \"MemberTypeAnnotation\": // Flow\n case \"Type\": // Flow\n case \"TSHasOptionalTypeParameterInstantiation\":\n case \"TSHasOptionalTypeParameters\":\n case \"TSHasOptionalTypeAnnotation\":\n case \"ChainElement\": // Supertype of MemberExpression and CallExpression\n throw new Error(\"unprintable type: \" + JSON.stringify(n.type));\n case \"CommentBlock\": // Babel block comment.\n case \"Block\": // Esprima block comment.\n return (0, lines_1.concat)([\"/*\", (0, lines_1.fromString)(n.value, options), \"*/\"]);\n case \"CommentLine\": // Babel line comment.\n case \"Line\": // Esprima line comment.\n return (0, lines_1.concat)([\"//\", (0, lines_1.fromString)(n.value, options)]);\n // Type Annotations for Facebook Flow, typically stripped out or\n // transformed away before printing.\n case \"TypeAnnotation\":\n if (n.typeAnnotation) {\n if (n.typeAnnotation.type !== \"FunctionTypeAnnotation\") {\n parts.push(\": \");\n }\n parts.push(path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n }\n return (0, lines_1.fromString)(\"\");\n case \"ExistentialTypeParam\":\n case \"ExistsTypeAnnotation\":\n return (0, lines_1.fromString)(\"*\", options);\n case \"EmptyTypeAnnotation\":\n return (0, lines_1.fromString)(\"empty\", options);\n case \"AnyTypeAnnotation\":\n return (0, lines_1.fromString)(\"any\", options);\n case \"MixedTypeAnnotation\":\n return (0, lines_1.fromString)(\"mixed\", options);\n case \"ArrayTypeAnnotation\":\n return (0, lines_1.concat)([path.call(print, \"elementType\"), \"[]\"]);\n case \"TupleTypeAnnotation\": {\n var printed_2 = path.map(print, \"types\");\n var joined = (0, lines_1.fromString)(\", \").join(printed_2);\n var oneLine_3 = joined.getLineLength(1) <= options.wrapColumn;\n if (oneLine_3) {\n if (options.arrayBracketSpacing) {\n parts.push(\"[ \");\n }\n else {\n parts.push(\"[\");\n }\n }\n else {\n parts.push(\"[\\n\");\n }\n path.each(function (elemPath) {\n var i = elemPath.getName();\n var elem = elemPath.getValue();\n if (!elem) {\n // If the array expression ends with a hole, that hole\n // will be ignored by the interpreter, but if it ends with\n // two (or more) holes, we need to write out two (or more)\n // commas so that the resulting code is interpreted with\n // both (all) of the holes.\n parts.push(\",\");\n }\n else {\n var lines = printed_2[i];\n if (oneLine_3) {\n if (i > 0)\n parts.push(\" \");\n }\n else {\n lines = lines.indent(options.tabWidth);\n }\n parts.push(lines);\n if (i < n.types.length - 1 ||\n (!oneLine_3 && util.isTrailingCommaEnabled(options, \"arrays\")))\n parts.push(\",\");\n if (!oneLine_3)\n parts.push(\"\\n\");\n }\n }, \"types\");\n if (oneLine_3 && options.arrayBracketSpacing) {\n parts.push(\" ]\");\n }\n else {\n parts.push(\"]\");\n }\n return (0, lines_1.concat)(parts);\n }\n case \"BooleanTypeAnnotation\":\n return (0, lines_1.fromString)(\"boolean\", options);\n case \"BooleanLiteralTypeAnnotation\":\n (0, tiny_invariant_1.default)(typeof n.value === \"boolean\");\n return (0, lines_1.fromString)(\"\" + n.value, options);\n case \"InterfaceTypeAnnotation\":\n parts.push(\"interface\");\n if (n.extends && n.extends.length > 0) {\n parts.push(\" extends \", (0, lines_1.fromString)(\", \").join(path.map(print, \"extends\")));\n }\n parts.push(\" \", path.call(print, \"body\"));\n return (0, lines_1.concat)(parts);\n case \"DeclareFunction\":\n return printFlowDeclaration(path, [\n \"function \",\n path.call(print, \"id\"),\n \";\",\n ]);\n case \"DeclareModule\":\n return printFlowDeclaration(path, [\n \"module \",\n path.call(print, \"id\"),\n \" \",\n path.call(print, \"body\"),\n ]);\n case \"DeclareModuleExports\":\n return printFlowDeclaration(path, [\n \"module.exports\",\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"DeclareVariable\":\n return printFlowDeclaration(path, [\"var \", path.call(print, \"id\"), \";\"]);\n case \"DeclareExportDeclaration\":\n case \"DeclareExportAllDeclaration\":\n return (0, lines_1.concat)([\"declare \", printExportDeclaration(path, options, print)]);\n case \"EnumDeclaration\":\n return (0, lines_1.concat)([\n \"enum \",\n path.call(print, \"id\"),\n path.call(print, \"body\"),\n ]);\n case \"EnumBooleanBody\":\n case \"EnumNumberBody\":\n case \"EnumStringBody\":\n case \"EnumSymbolBody\": {\n if (n.type === \"EnumSymbolBody\" || n.explicitType) {\n parts.push(\" of \", \n // EnumBooleanBody => boolean, etc.\n n.type.slice(4, -4).toLowerCase());\n }\n parts.push(\" {\\n\", (0, lines_1.fromString)(\"\\n\")\n .join(path.map(print, \"members\"))\n .indent(options.tabWidth), \"\\n}\");\n return (0, lines_1.concat)(parts);\n }\n case \"EnumDefaultedMember\":\n return (0, lines_1.concat)([path.call(print, \"id\"), \",\"]);\n case \"EnumBooleanMember\":\n case \"EnumNumberMember\":\n case \"EnumStringMember\":\n return (0, lines_1.concat)([\n path.call(print, \"id\"),\n \" = \",\n path.call(print, \"init\"),\n \",\",\n ]);\n case \"InferredPredicate\":\n return (0, lines_1.fromString)(\"%checks\", options);\n case \"DeclaredPredicate\":\n return (0, lines_1.concat)([\"%checks(\", path.call(print, \"value\"), \")\"]);\n case \"FunctionTypeAnnotation\": {\n // FunctionTypeAnnotation is ambiguous:\n // declare function(a: B): void; OR\n // const A: (a: B) => void;\n var parent = path.getParentNode(0);\n var isArrowFunctionTypeAnnotation = !(namedTypes.ObjectTypeCallProperty.check(parent) ||\n (namedTypes.ObjectTypeInternalSlot.check(parent) && parent.method) ||\n namedTypes.DeclareFunction.check(path.getParentNode(2)));\n var needsColon = isArrowFunctionTypeAnnotation &&\n !namedTypes.FunctionTypeParam.check(parent) &&\n !namedTypes.TypeAlias.check(parent);\n if (needsColon) {\n parts.push(\": \");\n }\n var hasTypeParameters = !!n.typeParameters;\n var needsParens = hasTypeParameters || n.params.length !== 1 || n.params[0].name;\n parts.push(hasTypeParameters ? path.call(print, \"typeParameters\") : \"\", needsParens ? \"(\" : \"\", printFunctionParams(path, options, print), needsParens ? \")\" : \"\");\n // The returnType is not wrapped in a TypeAnnotation, so the colon\n // needs to be added separately.\n if (n.returnType) {\n parts.push(isArrowFunctionTypeAnnotation ? \" => \" : \": \", path.call(print, \"returnType\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"FunctionTypeParam\": {\n var name = path.call(print, \"name\");\n parts.push(name);\n if (n.optional) {\n parts.push(\"?\");\n }\n if (name.infos[0].line) {\n parts.push(\": \");\n }\n parts.push(path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n }\n case \"GenericTypeAnnotation\":\n return (0, lines_1.concat)([\n path.call(print, \"id\"),\n path.call(print, \"typeParameters\"),\n ]);\n case \"DeclareInterface\":\n parts.push(\"declare \");\n // Fall through to InterfaceDeclaration...\n case \"InterfaceDeclaration\":\n case \"TSInterfaceDeclaration\":\n if (n.declare) {\n parts.push(\"declare \");\n }\n parts.push(\"interface \", path.call(print, \"id\"), path.call(print, \"typeParameters\"), \" \");\n if (n[\"extends\"] && n[\"extends\"].length > 0) {\n parts.push(\"extends \", (0, lines_1.fromString)(\", \").join(path.map(print, \"extends\")), \" \");\n }\n if (n.body) {\n parts.push(path.call(print, \"body\"));\n }\n return (0, lines_1.concat)(parts);\n case \"ClassImplements\":\n case \"InterfaceExtends\":\n return (0, lines_1.concat)([\n path.call(print, \"id\"),\n path.call(print, \"typeParameters\"),\n ]);\n case \"IntersectionTypeAnnotation\":\n return (0, lines_1.fromString)(\" & \").join(path.map(print, \"types\"));\n case \"NullableTypeAnnotation\":\n return (0, lines_1.concat)([\"?\", path.call(print, \"typeAnnotation\")]);\n case \"NullLiteralTypeAnnotation\":\n return (0, lines_1.fromString)(\"null\", options);\n case \"ThisTypeAnnotation\":\n return (0, lines_1.fromString)(\"this\", options);\n case \"NumberTypeAnnotation\":\n return (0, lines_1.fromString)(\"number\", options);\n case \"ObjectTypeCallProperty\":\n return path.call(print, \"value\");\n case \"ObjectTypeIndexer\":\n if (n.static) {\n parts.push(\"static \");\n }\n parts.push(printVariance(path, print), \"[\");\n if (n.id) {\n parts.push(path.call(print, \"id\"), \": \");\n }\n parts.push(path.call(print, \"key\"), \"]: \", path.call(print, \"value\"));\n return (0, lines_1.concat)(parts);\n case \"ObjectTypeProperty\":\n return (0, lines_1.concat)([\n printVariance(path, print),\n path.call(print, \"key\"),\n n.optional ? \"?\" : \"\",\n \": \",\n path.call(print, \"value\"),\n ]);\n case \"ObjectTypeInternalSlot\":\n return (0, lines_1.concat)([\n n.static ? \"static \" : \"\",\n \"[[\",\n path.call(print, \"id\"),\n \"]]\",\n n.optional ? \"?\" : \"\",\n n.value.type !== \"FunctionTypeAnnotation\" ? \": \" : \"\",\n path.call(print, \"value\"),\n ]);\n case \"QualifiedTypeIdentifier\":\n return (0, lines_1.concat)([\n path.call(print, \"qualification\"),\n \".\",\n path.call(print, \"id\"),\n ]);\n case \"StringLiteralTypeAnnotation\":\n return (0, lines_1.fromString)(nodeStr(n.value, options), options);\n case \"NumberLiteralTypeAnnotation\":\n case \"NumericLiteralTypeAnnotation\":\n (0, tiny_invariant_1.default)(typeof n.value === \"number\");\n return (0, lines_1.fromString)(JSON.stringify(n.value), options);\n case \"BigIntLiteralTypeAnnotation\":\n return (0, lines_1.fromString)(n.raw, options);\n case \"StringTypeAnnotation\":\n return (0, lines_1.fromString)(\"string\", options);\n case \"DeclareTypeAlias\":\n parts.push(\"declare \");\n // Fall through to TypeAlias...\n case \"TypeAlias\":\n return (0, lines_1.concat)([\n \"type \",\n path.call(print, \"id\"),\n path.call(print, \"typeParameters\"),\n \" = \",\n path.call(print, \"right\"),\n \";\",\n ]);\n case \"DeclareOpaqueType\":\n parts.push(\"declare \");\n // Fall through to OpaqueType...\n case \"OpaqueType\":\n parts.push(\"opaque type \", path.call(print, \"id\"), path.call(print, \"typeParameters\"));\n if (n[\"supertype\"]) {\n parts.push(\": \", path.call(print, \"supertype\"));\n }\n if (n[\"impltype\"]) {\n parts.push(\" = \", path.call(print, \"impltype\"));\n }\n parts.push(\";\");\n return (0, lines_1.concat)(parts);\n case \"TypeCastExpression\":\n return (0, lines_1.concat)([\n \"(\",\n path.call(print, \"expression\"),\n path.call(print, \"typeAnnotation\"),\n \")\",\n ]);\n case \"TypeParameterDeclaration\":\n case \"TypeParameterInstantiation\":\n return (0, lines_1.concat)([\n \"<\",\n (0, lines_1.fromString)(\", \").join(path.map(print, \"params\")),\n \">\",\n ]);\n case \"Variance\":\n if (n.kind === \"plus\") {\n return (0, lines_1.fromString)(\"+\");\n }\n if (n.kind === \"minus\") {\n return (0, lines_1.fromString)(\"-\");\n }\n return (0, lines_1.fromString)(\"\");\n case \"TypeParameter\":\n if (n.variance) {\n parts.push(printVariance(path, print));\n }\n parts.push(path.call(print, \"name\"));\n if (n.bound) {\n parts.push(path.call(print, \"bound\"));\n }\n if (n[\"default\"]) {\n parts.push(\"=\", path.call(print, \"default\"));\n }\n return (0, lines_1.concat)(parts);\n case \"TypeofTypeAnnotation\":\n return (0, lines_1.concat)([\n (0, lines_1.fromString)(\"typeof \", options),\n path.call(print, \"argument\"),\n ]);\n case \"IndexedAccessType\":\n case \"OptionalIndexedAccessType\":\n return (0, lines_1.concat)([\n path.call(print, \"objectType\"),\n n.optional ? \"?.\" : \"\",\n \"[\",\n path.call(print, \"indexType\"),\n \"]\",\n ]);\n case \"UnionTypeAnnotation\":\n return (0, lines_1.fromString)(\" | \").join(path.map(print, \"types\"));\n case \"VoidTypeAnnotation\":\n return (0, lines_1.fromString)(\"void\", options);\n case \"NullTypeAnnotation\":\n return (0, lines_1.fromString)(\"null\", options);\n case \"SymbolTypeAnnotation\":\n return (0, lines_1.fromString)(\"symbol\", options);\n case \"BigIntTypeAnnotation\":\n return (0, lines_1.fromString)(\"bigint\", options);\n // Type Annotations for TypeScript (when using Babylon as parser)\n case \"TSType\":\n throw new Error(\"unprintable type: \" + JSON.stringify(n.type));\n case \"TSNumberKeyword\":\n return (0, lines_1.fromString)(\"number\", options);\n case \"TSBigIntKeyword\":\n return (0, lines_1.fromString)(\"bigint\", options);\n case \"TSObjectKeyword\":\n return (0, lines_1.fromString)(\"object\", options);\n case \"TSBooleanKeyword\":\n return (0, lines_1.fromString)(\"boolean\", options);\n case \"TSStringKeyword\":\n return (0, lines_1.fromString)(\"string\", options);\n case \"TSSymbolKeyword\":\n return (0, lines_1.fromString)(\"symbol\", options);\n case \"TSAnyKeyword\":\n return (0, lines_1.fromString)(\"any\", options);\n case \"TSVoidKeyword\":\n return (0, lines_1.fromString)(\"void\", options);\n case \"TSIntrinsicKeyword\":\n return (0, lines_1.fromString)(\"intrinsic\", options);\n case \"TSThisType\":\n return (0, lines_1.fromString)(\"this\", options);\n case \"TSNullKeyword\":\n return (0, lines_1.fromString)(\"null\", options);\n case \"TSUndefinedKeyword\":\n return (0, lines_1.fromString)(\"undefined\", options);\n case \"TSUnknownKeyword\":\n return (0, lines_1.fromString)(\"unknown\", options);\n case \"TSNeverKeyword\":\n return (0, lines_1.fromString)(\"never\", options);\n case \"TSArrayType\":\n return (0, lines_1.concat)([path.call(print, \"elementType\"), \"[]\"]);\n case \"TSLiteralType\":\n return path.call(print, \"literal\");\n case \"TSUnionType\":\n return (0, lines_1.fromString)(\" | \").join(path.map(print, \"types\"));\n case \"TSIntersectionType\":\n return (0, lines_1.fromString)(\" & \").join(path.map(print, \"types\"));\n case \"TSConditionalType\":\n parts.push(path.call(print, \"checkType\"), \" extends \", path.call(print, \"extendsType\"), \" ? \", path.call(print, \"trueType\"), \" : \", path.call(print, \"falseType\"));\n return (0, lines_1.concat)(parts);\n case \"TSInferType\":\n parts.push(\"infer \", path.call(print, \"typeParameter\"));\n return (0, lines_1.concat)(parts);\n case \"TSParenthesizedType\":\n return (0, lines_1.concat)([\"(\", path.call(print, \"typeAnnotation\"), \")\"]);\n case \"TSFunctionType\":\n return (0, lines_1.concat)([\n path.call(print, \"typeParameters\"),\n \"(\",\n printFunctionParams(path, options, print),\n \") => \",\n path.call(print, \"typeAnnotation\", \"typeAnnotation\"),\n ]);\n case \"TSConstructorType\":\n return (0, lines_1.concat)([\n \"new \",\n path.call(print, \"typeParameters\"),\n \"(\",\n printFunctionParams(path, options, print),\n \") => \",\n path.call(print, \"typeAnnotation\", \"typeAnnotation\"),\n ]);\n case \"TSMappedType\": {\n parts.push(n.readonly ? \"readonly \" : \"\", \"[\", path.call(print, \"typeParameter\"), \"]\", n.optional ? \"?\" : \"\");\n if (n.typeAnnotation) {\n parts.push(\": \", path.call(print, \"typeAnnotation\"), \";\");\n }\n return (0, lines_1.concat)([\"{\\n\", (0, lines_1.concat)(parts).indent(options.tabWidth), \"\\n}\"]);\n }\n case \"TSTupleType\":\n return (0, lines_1.concat)([\n \"[\",\n (0, lines_1.fromString)(\", \").join(path.map(print, \"elementTypes\")),\n \"]\",\n ]);\n case \"TSNamedTupleMember\":\n parts.push(path.call(print, \"label\"));\n if (n.optional) {\n parts.push(\"?\");\n }\n parts.push(\": \", path.call(print, \"elementType\"));\n return (0, lines_1.concat)(parts);\n case \"TSRestType\":\n return (0, lines_1.concat)([\"...\", path.call(print, \"typeAnnotation\")]);\n case \"TSOptionalType\":\n return (0, lines_1.concat)([path.call(print, \"typeAnnotation\"), \"?\"]);\n case \"TSIndexedAccessType\":\n return (0, lines_1.concat)([\n path.call(print, \"objectType\"),\n \"[\",\n path.call(print, \"indexType\"),\n \"]\",\n ]);\n case \"TSTypeOperator\":\n return (0, lines_1.concat)([\n path.call(print, \"operator\"),\n \" \",\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"TSTypeLiteral\": {\n var members = (0, lines_1.fromString)(\"\\n\").join(path.map(print, \"members\").map(function (member) {\n if (lastNonSpaceCharacter(member) !== \";\") {\n return member.concat(\";\");\n }\n return member;\n }));\n if (members.isEmpty()) {\n return (0, lines_1.fromString)(\"{}\", options);\n }\n parts.push(\"{\\n\", members.indent(options.tabWidth), \"\\n}\");\n return (0, lines_1.concat)(parts);\n }\n case \"TSEnumMember\":\n parts.push(path.call(print, \"id\"));\n if (n.initializer) {\n parts.push(\" = \", path.call(print, \"initializer\"));\n }\n return (0, lines_1.concat)(parts);\n case \"TSTypeQuery\":\n return (0, lines_1.concat)([\"typeof \", path.call(print, \"exprName\")]);\n case \"TSParameterProperty\":\n if (n.accessibility) {\n parts.push(n.accessibility, \" \");\n }\n if (n.export) {\n parts.push(\"export \");\n }\n if (n.static) {\n parts.push(\"static \");\n }\n if (n.readonly) {\n parts.push(\"readonly \");\n }\n parts.push(path.call(print, \"parameter\"));\n return (0, lines_1.concat)(parts);\n case \"TSTypeReference\":\n return (0, lines_1.concat)([\n path.call(print, \"typeName\"),\n path.call(print, \"typeParameters\"),\n ]);\n case \"TSQualifiedName\":\n return (0, lines_1.concat)([path.call(print, \"left\"), \".\", path.call(print, \"right\")]);\n case \"TSAsExpression\":\n case \"TSSatisfiesExpression\": {\n var expression = path.call(print, \"expression\");\n parts.push(expression, n.type === \"TSSatisfiesExpression\" ? \" satisfies \" : \" as \", path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n }\n case \"TSTypeCastExpression\":\n return (0, lines_1.concat)([\n path.call(print, \"expression\"),\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"TSNonNullExpression\":\n return (0, lines_1.concat)([path.call(print, \"expression\"), \"!\"]);\n case \"TSTypeAnnotation\":\n return (0, lines_1.concat)([\": \", path.call(print, \"typeAnnotation\")]);\n case \"TSIndexSignature\":\n return (0, lines_1.concat)([\n n.readonly ? \"readonly \" : \"\",\n \"[\",\n path.map(print, \"parameters\"),\n \"]\",\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"TSPropertySignature\":\n parts.push(printVariance(path, print), n.readonly ? \"readonly \" : \"\");\n if (n.computed) {\n parts.push(\"[\", path.call(print, \"key\"), \"]\");\n }\n else {\n parts.push(path.call(print, \"key\"));\n }\n parts.push(n.optional ? \"?\" : \"\", path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n case \"TSMethodSignature\":\n if (n.kind === \"get\") {\n parts.push(\"get \");\n }\n else if (n.kind === \"set\") {\n parts.push(\"set \");\n }\n if (n.computed) {\n parts.push(\"[\", path.call(print, \"key\"), \"]\");\n }\n else {\n parts.push(path.call(print, \"key\"));\n }\n if (n.optional) {\n parts.push(\"?\");\n }\n parts.push(path.call(print, \"typeParameters\"), \"(\", printFunctionParams(path, options, print), \")\", path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n case \"TSTypePredicate\":\n if (n.asserts) {\n parts.push(\"asserts \");\n }\n parts.push(path.call(print, \"parameterName\"));\n if (n.typeAnnotation) {\n parts.push(\" is \", path.call(print, \"typeAnnotation\", \"typeAnnotation\"));\n }\n return (0, lines_1.concat)(parts);\n case \"TSCallSignatureDeclaration\":\n return (0, lines_1.concat)([\n path.call(print, \"typeParameters\"),\n \"(\",\n printFunctionParams(path, options, print),\n \")\",\n path.call(print, \"typeAnnotation\"),\n ]);\n case \"TSConstructSignatureDeclaration\":\n if (n.typeParameters) {\n parts.push(\"new\", path.call(print, \"typeParameters\"));\n }\n else {\n parts.push(\"new \");\n }\n parts.push(\"(\", printFunctionParams(path, options, print), \")\", path.call(print, \"typeAnnotation\"));\n return (0, lines_1.concat)(parts);\n case \"TSTypeAliasDeclaration\":\n return (0, lines_1.concat)([\n n.declare ? \"declare \" : \"\",\n \"type \",\n path.call(print, \"id\"),\n path.call(print, \"typeParameters\"),\n \" = \",\n path.call(print, \"typeAnnotation\"),\n \";\",\n ]);\n case \"TSTypeParameter\": {\n parts.push(path.call(print, \"name\"));\n // ambiguous because of TSMappedType\n var parent = path.getParentNode(0);\n var isInMappedType = namedTypes.TSMappedType.check(parent);\n if (n.constraint) {\n parts.push(isInMappedType ? \" in \" : \" extends \", path.call(print, \"constraint\"));\n }\n if (n[\"default\"]) {\n parts.push(\" = \", path.call(print, \"default\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"TSTypeAssertion\": {\n parts.push(\"<\", path.call(print, \"typeAnnotation\"), \"> \", path.call(print, \"expression\"));\n return (0, lines_1.concat)(parts);\n }\n case \"TSTypeParameterDeclaration\":\n case \"TSTypeParameterInstantiation\":\n return (0, lines_1.concat)([\n \"<\",\n (0, lines_1.fromString)(\", \").join(path.map(print, \"params\")),\n \">\",\n ]);\n case \"TSEnumDeclaration\": {\n parts.push(n.declare ? \"declare \" : \"\", n.const ? \"const \" : \"\", \"enum \", path.call(print, \"id\"));\n var memberLines = (0, lines_1.fromString)(\",\\n\").join(path.map(print, \"members\"));\n if (memberLines.isEmpty()) {\n parts.push(\" {}\");\n }\n else {\n parts.push(\" {\\n\", memberLines.indent(options.tabWidth), \"\\n}\");\n }\n return (0, lines_1.concat)(parts);\n }\n case \"TSExpressionWithTypeArguments\":\n return (0, lines_1.concat)([\n path.call(print, \"expression\"),\n path.call(print, \"typeParameters\"),\n ]);\n case \"TSInterfaceBody\": {\n var lines = (0, lines_1.fromString)(\"\\n\").join(path.map(print, \"body\").map(function (element) {\n if (lastNonSpaceCharacter(element) !== \";\") {\n return element.concat(\";\");\n }\n return element;\n }));\n if (lines.isEmpty()) {\n return (0, lines_1.fromString)(\"{}\", options);\n }\n return (0, lines_1.concat)([\"{\\n\", lines.indent(options.tabWidth), \"\\n}\"]);\n }\n case \"TSImportType\":\n parts.push(\"import(\", path.call(print, \"argument\"), \")\");\n if (n.qualifier) {\n parts.push(\".\", path.call(print, \"qualifier\"));\n }\n if (n.typeParameters) {\n parts.push(path.call(print, \"typeParameters\"));\n }\n return (0, lines_1.concat)(parts);\n case \"TSImportEqualsDeclaration\":\n if (n.isExport) {\n parts.push(\"export \");\n }\n parts.push(\"import \", path.call(print, \"id\"), \" = \", path.call(print, \"moduleReference\"));\n return maybeAddSemicolon((0, lines_1.concat)(parts));\n case \"TSExternalModuleReference\":\n return (0, lines_1.concat)([\"require(\", path.call(print, \"expression\"), \")\"]);\n case \"TSModuleDeclaration\": {\n var parent = path.getParentNode();\n if (parent.type === \"TSModuleDeclaration\") {\n parts.push(\".\");\n }\n else {\n if (n.declare) {\n parts.push(\"declare \");\n }\n if (!n.global) {\n var isExternal = n.id.type === \"StringLiteral\" ||\n (n.id.type === \"Literal\" && typeof n.id.value === \"string\");\n if (isExternal) {\n parts.push(\"module \");\n }\n else if (n.loc && n.loc.lines && n.id.loc) {\n var prefix = n.loc.lines.sliceString(n.loc.start, n.id.loc.start);\n // These keywords are fundamentally ambiguous in the\n // Babylon parser, and not reflected in the AST, so\n // the best we can do is to match the original code,\n // when possible.\n if (prefix.indexOf(\"module\") >= 0) {\n parts.push(\"module \");\n }\n else {\n parts.push(\"namespace \");\n }\n }\n else {\n parts.push(\"namespace \");\n }\n }\n }\n parts.push(path.call(print, \"id\"));\n if (n.body) {\n parts.push(\" \");\n parts.push(path.call(print, \"body\"));\n }\n return (0, lines_1.concat)(parts);\n }\n case \"TSModuleBlock\": {\n var naked = path.call(function (bodyPath) { return printStatementSequence(bodyPath, options, print); }, \"body\");\n if (naked.isEmpty()) {\n parts.push(\"{}\");\n }\n else {\n parts.push(\"{\\n\", naked.indent(options.tabWidth), \"\\n}\");\n }\n return (0, lines_1.concat)(parts);\n }\n case \"TSInstantiationExpression\": {\n parts.push(path.call(print, \"expression\"), path.call(print, \"typeParameters\"));\n return (0, lines_1.concat)(parts);\n }\n // https://github.com/babel/babel/pull/10148\n case \"V8IntrinsicIdentifier\":\n return (0, lines_1.concat)([\"%\", path.call(print, \"name\")]);\n // https://github.com/babel/babel/pull/13191\n case \"TopicReference\":\n return (0, lines_1.fromString)(\"#\");\n // Unhandled types below. If encountered, nodes of these types should\n // be either left alone or desugared into AST types that are fully\n // supported by the pretty-printer.\n case \"ClassHeritage\": // TODO\n case \"ComprehensionBlock\": // TODO\n case \"ComprehensionExpression\": // TODO\n case \"Glob\": // TODO\n case \"GeneratorExpression\": // TODO\n case \"LetStatement\": // TODO\n case \"LetExpression\": // TODO\n case \"GraphExpression\": // TODO\n case \"GraphIndexExpression\": // TODO\n case \"XMLDefaultDeclaration\":\n case \"XMLAnyName\":\n case \"XMLQualifiedIdentifier\":\n case \"XMLFunctionQualifiedIdentifier\":\n case \"XMLAttributeSelector\":\n case \"XMLFilterExpression\":\n case \"XML\":\n case \"XMLElement\":\n case \"XMLList\":\n case \"XMLEscape\":\n case \"XMLText\":\n case \"XMLStartTag\":\n case \"XMLEndTag\":\n case \"XMLPointTag\":\n case \"XMLName\":\n case \"XMLAttribute\":\n case \"XMLCdata\":\n case \"XMLComment\":\n case \"XMLProcessingInstruction\":\n default:\n debugger;\n throw new Error(\"unknown type: \" + JSON.stringify(n.type));\n }\n}\nfunction printDecorators(path, printPath) {\n var parts = [];\n var node = path.getValue();\n if (node.decorators &&\n node.decorators.length > 0 &&\n // If the parent node is an export declaration, it will be\n // responsible for printing node.decorators.\n !util.getParentExportDeclaration(path)) {\n path.each(function (decoratorPath) {\n parts.push(printPath(decoratorPath), \"\\n\");\n }, \"decorators\");\n }\n else if (util.isExportDeclaration(node) &&\n node.declaration &&\n node.declaration.decorators) {\n // Export declarations are responsible for printing any decorators\n // that logically apply to node.declaration.\n path.each(function (decoratorPath) {\n parts.push(printPath(decoratorPath), \"\\n\");\n }, \"declaration\", \"decorators\");\n }\n return (0, lines_1.concat)(parts);\n}\nfunction printStatementSequence(path, options, print) {\n var filtered = [];\n var sawComment = false;\n var sawStatement = false;\n path.each(function (stmtPath) {\n var stmt = stmtPath.getValue();\n // Just in case the AST has been modified to contain falsy\n // \"statements,\" it's safer simply to skip them.\n if (!stmt) {\n return;\n }\n // Skip printing EmptyStatement nodes to avoid leaving stray\n // semicolons lying around.\n if (stmt.type === \"EmptyStatement\" &&\n !(stmt.comments && stmt.comments.length > 0)) {\n return;\n }\n if (namedTypes.Comment.check(stmt)) {\n // The pretty printer allows a dangling Comment node to act as\n // a Statement when the Comment can't be attached to any other\n // non-Comment node in the tree.\n sawComment = true;\n }\n else if (namedTypes.Statement.check(stmt)) {\n sawStatement = true;\n }\n else {\n // When the pretty printer encounters a string instead of an\n // AST node, it just prints the string. This behavior can be\n // useful for fine-grained formatting decisions like inserting\n // blank lines.\n isString.assert(stmt);\n }\n // We can't hang onto stmtPath outside of this function, because\n // it's just a reference to a mutable FastPath object, so we have\n // to go ahead and print it here.\n filtered.push({\n node: stmt,\n printed: print(stmtPath),\n });\n });\n if (sawComment) {\n (0, tiny_invariant_1.default)(sawStatement === false, \"Comments may appear as statements in otherwise empty statement \" +\n \"lists, but may not coexist with non-Comment nodes.\");\n }\n var prevTrailingSpace = null;\n var len = filtered.length;\n var parts = [];\n filtered.forEach(function (info, i) {\n var printed = info.printed;\n var stmt = info.node;\n var multiLine = printed.length > 1;\n var notFirst = i > 0;\n var notLast = i < len - 1;\n var leadingSpace;\n var trailingSpace;\n var lines = stmt && stmt.loc && stmt.loc.lines;\n var trueLoc = lines && options.reuseWhitespace && util.getTrueLoc(stmt, lines);\n if (notFirst) {\n if (trueLoc) {\n var beforeStart = lines.skipSpaces(trueLoc.start, true);\n var beforeStartLine = beforeStart ? beforeStart.line : 1;\n var leadingGap = trueLoc.start.line - beforeStartLine;\n leadingSpace = Array(leadingGap + 1).join(\"\\n\");\n }\n else {\n leadingSpace = multiLine ? \"\\n\\n\" : \"\\n\";\n }\n }\n else {\n leadingSpace = \"\";\n }\n if (notLast) {\n if (trueLoc) {\n var afterEnd = lines.skipSpaces(trueLoc.end);\n var afterEndLine = afterEnd ? afterEnd.line : lines.length;\n var trailingGap = afterEndLine - trueLoc.end.line;\n trailingSpace = Array(trailingGap + 1).join(\"\\n\");\n }\n else {\n trailingSpace = multiLine ? \"\\n\\n\" : \"\\n\";\n }\n }\n else {\n trailingSpace = \"\";\n }\n parts.push(maxSpace(prevTrailingSpace, leadingSpace), printed);\n if (notLast) {\n prevTrailingSpace = trailingSpace;\n }\n else if (trailingSpace) {\n parts.push(trailingSpace);\n }\n });\n return (0, lines_1.concat)(parts);\n}\nfunction maxSpace(s1, s2) {\n if (!s1 && !s2) {\n return (0, lines_1.fromString)(\"\");\n }\n if (!s1) {\n return (0, lines_1.fromString)(s2);\n }\n if (!s2) {\n return (0, lines_1.fromString)(s1);\n }\n var spaceLines1 = (0, lines_1.fromString)(s1);\n var spaceLines2 = (0, lines_1.fromString)(s2);\n if (spaceLines2.length > spaceLines1.length) {\n return spaceLines2;\n }\n return spaceLines1;\n}\nfunction printClassMemberModifiers(node) {\n var parts = [];\n if (node.declare) {\n parts.push(\"declare \");\n }\n var access = node.accessibility || node.access;\n if (typeof access === \"string\") {\n parts.push(access, \" \");\n }\n if (node.static) {\n parts.push(\"static \");\n }\n if (node.override) {\n parts.push(\"override \");\n }\n if (node.abstract) {\n parts.push(\"abstract \");\n }\n if (node.readonly) {\n parts.push(\"readonly \");\n }\n return parts;\n}\nfunction printMethod(path, options, print) {\n var node = path.getNode();\n var kind = node.kind;\n var parts = [];\n var nodeValue = node.value;\n if (!namedTypes.FunctionExpression.check(nodeValue)) {\n nodeValue = node;\n }\n parts.push.apply(parts, printClassMemberModifiers(node));\n if (nodeValue.async) {\n parts.push(\"async \");\n }\n if (nodeValue.generator) {\n parts.push(\"*\");\n }\n if (kind === \"get\" || kind === \"set\") {\n parts.push(kind, \" \");\n }\n var key = path.call(print, \"key\");\n if (node.computed) {\n key = (0, lines_1.concat)([\"[\", key, \"]\"]);\n }\n parts.push(key);\n if (node.optional) {\n parts.push(\"?\");\n }\n if (node === nodeValue) {\n parts.push(path.call(print, \"typeParameters\"), \"(\", printFunctionParams(path, options, print), \")\", path.call(print, \"returnType\"));\n if (node.body) {\n parts.push(\" \", path.call(print, \"body\"));\n }\n else {\n parts.push(\";\");\n }\n }\n else {\n parts.push(path.call(print, \"value\", \"typeParameters\"), \"(\", path.call(function (valuePath) { return printFunctionParams(valuePath, options, print); }, \"value\"), \")\", path.call(print, \"value\", \"returnType\"));\n if (nodeValue.body) {\n parts.push(\" \", path.call(print, \"value\", \"body\"));\n }\n else {\n parts.push(\";\");\n }\n }\n return (0, lines_1.concat)(parts);\n}\nfunction printArgumentsList(path, options, print) {\n var printed = path.map(print, \"arguments\");\n var trailingComma = util.isTrailingCommaEnabled(options, \"parameters\");\n var joined = (0, lines_1.fromString)(\", \").join(printed);\n if (joined.getLineLength(1) > options.wrapColumn) {\n joined = (0, lines_1.fromString)(\",\\n\").join(printed);\n return (0, lines_1.concat)([\n \"(\\n\",\n joined.indent(options.tabWidth),\n trailingComma ? \",\\n)\" : \"\\n)\",\n ]);\n }\n return (0, lines_1.concat)([\"(\", joined, \")\"]);\n}\nfunction printFunctionParams(path, options, print) {\n var fun = path.getValue();\n var params;\n var printed = [];\n if (fun.params) {\n params = fun.params;\n printed = path.map(print, \"params\");\n }\n else if (fun.parameters) {\n params = fun.parameters;\n printed = path.map(print, \"parameters\");\n }\n if (fun.defaults) {\n path.each(function (defExprPath) {\n var i = defExprPath.getName();\n var p = printed[i];\n if (p && defExprPath.getValue()) {\n printed[i] = (0, lines_1.concat)([p, \" = \", print(defExprPath)]);\n }\n }, \"defaults\");\n }\n if (fun.rest) {\n printed.push((0, lines_1.concat)([\"...\", path.call(print, \"rest\")]));\n }\n var joined = (0, lines_1.fromString)(\", \").join(printed);\n if (joined.length > 1 || joined.getLineLength(1) > options.wrapColumn) {\n joined = (0, lines_1.fromString)(\",\\n\").join(printed);\n if (util.isTrailingCommaEnabled(options, \"parameters\") &&\n !fun.rest &&\n params[params.length - 1].type !== \"RestElement\") {\n joined = (0, lines_1.concat)([joined, \",\\n\"]);\n }\n else {\n joined = (0, lines_1.concat)([joined, \"\\n\"]);\n }\n return (0, lines_1.concat)([\"\\n\", joined.indent(options.tabWidth)]);\n }\n return joined;\n}\nfunction maybePrintImportAssertions(path, options, print) {\n var n = path.getValue();\n if (n.assertions && n.assertions.length > 0) {\n var parts = [\" assert {\"];\n var printed = path.map(print, \"assertions\");\n var flat = (0, lines_1.fromString)(\", \").join(printed);\n if (flat.length > 1 || flat.getLineLength(1) > options.wrapColumn) {\n parts.push(\"\\n\", (0, lines_1.fromString)(\",\\n\").join(printed).indent(options.tabWidth), \"\\n}\");\n }\n else {\n parts.push(\" \", flat, \" }\");\n }\n return (0, lines_1.concat)(parts);\n }\n return (0, lines_1.fromString)(\"\");\n}\nfunction printExportDeclaration(path, options, print) {\n var decl = path.getValue();\n var parts = [\"export \"];\n if (decl.exportKind && decl.exportKind === \"type\") {\n if (!decl.declaration) {\n parts.push(\"type \");\n }\n }\n var shouldPrintSpaces = options.objectCurlySpacing;\n namedTypes.Declaration.assert(decl);\n if (decl[\"default\"] || decl.type === \"ExportDefaultDeclaration\") {\n parts.push(\"default \");\n }\n if (decl.declaration) {\n parts.push(path.call(print, \"declaration\"));\n }\n else if (decl.specifiers) {\n if (decl.specifiers.length === 1 &&\n decl.specifiers[0].type === \"ExportBatchSpecifier\") {\n parts.push(\"*\");\n }\n else if (decl.specifiers.length === 0) {\n parts.push(\"{}\");\n }\n else if (decl.specifiers[0].type === \"ExportDefaultSpecifier\" ||\n decl.specifiers[0].type === \"ExportNamespaceSpecifier\") {\n var unbracedSpecifiers_2 = [];\n var bracedSpecifiers_2 = [];\n path.each(function (specifierPath) {\n var spec = specifierPath.getValue();\n if (spec.type === \"ExportDefaultSpecifier\" ||\n spec.type === \"ExportNamespaceSpecifier\") {\n unbracedSpecifiers_2.push(print(specifierPath));\n }\n else {\n bracedSpecifiers_2.push(print(specifierPath));\n }\n }, \"specifiers\");\n unbracedSpecifiers_2.forEach(function (lines, i) {\n if (i > 0) {\n parts.push(\", \");\n }\n parts.push(lines);\n });\n if (bracedSpecifiers_2.length > 0) {\n var lines_2 = (0, lines_1.fromString)(\", \").join(bracedSpecifiers_2);\n if (lines_2.getLineLength(1) > options.wrapColumn) {\n lines_2 = (0, lines_1.concat)([\n (0, lines_1.fromString)(\",\\n\").join(bracedSpecifiers_2).indent(options.tabWidth),\n \",\",\n ]);\n }\n if (unbracedSpecifiers_2.length > 0) {\n parts.push(\", \");\n }\n if (lines_2.length > 1) {\n parts.push(\"{\\n\", lines_2, \"\\n}\");\n }\n else if (options.objectCurlySpacing) {\n parts.push(\"{ \", lines_2, \" }\");\n }\n else {\n parts.push(\"{\", lines_2, \"}\");\n }\n }\n }\n else {\n parts.push(shouldPrintSpaces ? \"{ \" : \"{\", (0, lines_1.fromString)(\", \").join(path.map(print, \"specifiers\")), shouldPrintSpaces ? \" }\" : \"}\");\n }\n if (decl.source) {\n parts.push(\" from \", path.call(print, \"source\"), maybePrintImportAssertions(path, options, print));\n }\n }\n var lines = (0, lines_1.concat)(parts);\n if (lastNonSpaceCharacter(lines) !== \";\" &&\n !(decl.declaration &&\n (decl.declaration.type === \"FunctionDeclaration\" ||\n decl.declaration.type === \"ClassDeclaration\" ||\n decl.declaration.type === \"TSModuleDeclaration\" ||\n decl.declaration.type === \"TSInterfaceDeclaration\" ||\n decl.declaration.type === \"TSEnumDeclaration\"))) {\n lines = (0, lines_1.concat)([lines, \";\"]);\n }\n return lines;\n}\nfunction printFlowDeclaration(path, parts) {\n var parentExportDecl = util.getParentExportDeclaration(path);\n if (parentExportDecl) {\n (0, tiny_invariant_1.default)(parentExportDecl.type === \"DeclareExportDeclaration\");\n }\n else {\n // If the parent node has type DeclareExportDeclaration, then it\n // will be responsible for printing the \"declare\" token. Otherwise\n // it needs to be printed with this non-exported declaration node.\n parts.unshift(\"declare \");\n }\n return (0, lines_1.concat)(parts);\n}\nfunction printVariance(path, print) {\n return path.call(function (variancePath) {\n var value = variancePath.getValue();\n if (value) {\n if (value === \"plus\") {\n return (0, lines_1.fromString)(\"+\");\n }\n if (value === \"minus\") {\n return (0, lines_1.fromString)(\"-\");\n }\n return print(variancePath);\n }\n return (0, lines_1.fromString)(\"\");\n }, \"variance\");\n}\nfunction adjustClause(clause, options) {\n if (clause.length > 1)\n return (0, lines_1.concat)([\" \", clause]);\n return (0, lines_1.concat)([\"\\n\", maybeAddSemicolon(clause).indent(options.tabWidth)]);\n}\nfunction lastNonSpaceCharacter(lines) {\n var pos = lines.lastPos();\n do {\n var ch = lines.charAt(pos);\n if (/\\S/.test(ch))\n return ch;\n } while (lines.prevPos(pos));\n}\nfunction endsWithBrace(lines) {\n return lastNonSpaceCharacter(lines) === \"}\";\n}\nfunction swapQuotes(str) {\n return str.replace(/['\"]/g, function (m) { return (m === '\"' ? \"'\" : '\"'); });\n}\nfunction getPossibleRaw(node) {\n var value = types.getFieldValue(node, \"value\");\n var extra = types.getFieldValue(node, \"extra\");\n if (extra && typeof extra.raw === \"string\" && value == extra.rawValue) {\n return extra.raw;\n }\n if (node.type === \"Literal\") {\n var raw = node.raw;\n if (typeof raw === \"string\" && value == raw) {\n return raw;\n }\n }\n}\nfunction jsSafeStringify(str) {\n return JSON.stringify(str).replace(/[\\u2028\\u2029]/g, function (m) {\n return \"\\\\u\" + m.charCodeAt(0).toString(16);\n });\n}\nfunction nodeStr(str, options) {\n isString.assert(str);\n switch (options.quote) {\n case \"auto\": {\n var double = jsSafeStringify(str);\n var single = swapQuotes(jsSafeStringify(swapQuotes(str)));\n return double.length > single.length ? single : double;\n }\n case \"single\":\n return swapQuotes(jsSafeStringify(swapQuotes(str)));\n case \"double\":\n default:\n return jsSafeStringify(str);\n }\n}\nfunction maybeAddSemicolon(lines) {\n var eoc = lastNonSpaceCharacter(lines);\n if (!eoc || \"\\n};\".indexOf(eoc) < 0)\n return (0, lines_1.concat)([lines, \";\"]);\n return lines;\n}\n",
15
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = exports.prettyPrint = exports.print = exports.visit = exports.types = exports.parse = void 0;\nvar tslib_1 = require(\"tslib\");\nvar fs_1 = tslib_1.__importDefault(require(\"fs\"));\nvar types = tslib_1.__importStar(require(\"ast-types\"));\nexports.types = types;\nvar parser_1 = require(\"./lib/parser\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parser_1.parse; } });\nvar printer_1 = require(\"./lib/printer\");\n/**\n * Traverse and potentially modify an abstract syntax tree using a\n * convenient visitor syntax:\n *\n * recast.visit(ast, {\n * names: [],\n * visitIdentifier: function(path) {\n * var node = path.value;\n * this.visitor.names.push(node.name);\n * this.traverse(path);\n * }\n * });\n */\nvar ast_types_1 = require(\"ast-types\");\nObject.defineProperty(exports, \"visit\", { enumerable: true, get: function () { return ast_types_1.visit; } });\n/**\n * Reprint a modified syntax tree using as much of the original source\n * code as possible.\n */\nfunction print(node, options) {\n return new printer_1.Printer(options).print(node);\n}\nexports.print = print;\n/**\n * Print without attempting to reuse any original source code.\n */\nfunction prettyPrint(node, options) {\n return new printer_1.Printer(options).printGenerically(node);\n}\nexports.prettyPrint = prettyPrint;\n/**\n * Convenient command-line interface (see e.g. example/add-braces).\n */\nfunction run(transformer, options) {\n return runFile(process.argv[2], transformer, options);\n}\nexports.run = run;\nfunction runFile(path, transformer, options) {\n fs_1.default.readFile(path, \"utf-8\", function (err, code) {\n if (err) {\n console.error(err);\n return;\n }\n runString(code, transformer, options);\n });\n}\nfunction defaultWriteback(output) {\n process.stdout.write(output);\n}\nfunction runString(code, transformer, options) {\n var writeback = (options && options.writeback) || defaultWriteback;\n transformer((0, parser_1.parse)(code, options), function (node) {\n writeback(print(node, options).code);\n });\n}\n",
16
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Def = void 0;\nvar tslib_1 = require(\"tslib\");\nvar Op = Object.prototype;\nvar objToStr = Op.toString;\nvar hasOwn = Op.hasOwnProperty;\nvar BaseType = /** @class */ (function () {\n function BaseType() {\n }\n BaseType.prototype.assert = function (value, deep) {\n if (!this.check(value, deep)) {\n var str = shallowStringify(value);\n throw new Error(str + \" does not match type \" + this);\n }\n return true;\n };\n BaseType.prototype.arrayOf = function () {\n var elemType = this;\n return new ArrayType(elemType);\n };\n return BaseType;\n}());\nvar ArrayType = /** @class */ (function (_super) {\n tslib_1.__extends(ArrayType, _super);\n function ArrayType(elemType) {\n var _this = _super.call(this) || this;\n _this.elemType = elemType;\n _this.kind = \"ArrayType\";\n return _this;\n }\n ArrayType.prototype.toString = function () {\n return \"[\" + this.elemType + \"]\";\n };\n ArrayType.prototype.check = function (value, deep) {\n var _this = this;\n return Array.isArray(value) && value.every(function (elem) { return _this.elemType.check(elem, deep); });\n };\n return ArrayType;\n}(BaseType));\nvar IdentityType = /** @class */ (function (_super) {\n tslib_1.__extends(IdentityType, _super);\n function IdentityType(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.kind = \"IdentityType\";\n return _this;\n }\n IdentityType.prototype.toString = function () {\n return String(this.value);\n };\n IdentityType.prototype.check = function (value, deep) {\n var result = value === this.value;\n if (!result && typeof deep === \"function\") {\n deep(this, value);\n }\n return result;\n };\n return IdentityType;\n}(BaseType));\nvar ObjectType = /** @class */ (function (_super) {\n tslib_1.__extends(ObjectType, _super);\n function ObjectType(fields) {\n var _this = _super.call(this) || this;\n _this.fields = fields;\n _this.kind = \"ObjectType\";\n return _this;\n }\n ObjectType.prototype.toString = function () {\n return \"{ \" + this.fields.join(\", \") + \" }\";\n };\n ObjectType.prototype.check = function (value, deep) {\n return (objToStr.call(value) === objToStr.call({}) &&\n this.fields.every(function (field) {\n return field.type.check(value[field.name], deep);\n }));\n };\n return ObjectType;\n}(BaseType));\nvar OrType = /** @class */ (function (_super) {\n tslib_1.__extends(OrType, _super);\n function OrType(types) {\n var _this = _super.call(this) || this;\n _this.types = types;\n _this.kind = \"OrType\";\n return _this;\n }\n OrType.prototype.toString = function () {\n return this.types.join(\" | \");\n };\n OrType.prototype.check = function (value, deep) {\n return this.types.some(function (type) {\n return type.check(value, deep);\n });\n };\n return OrType;\n}(BaseType));\nvar PredicateType = /** @class */ (function (_super) {\n tslib_1.__extends(PredicateType, _super);\n function PredicateType(name, predicate) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this.predicate = predicate;\n _this.kind = \"PredicateType\";\n return _this;\n }\n PredicateType.prototype.toString = function () {\n return this.name;\n };\n PredicateType.prototype.check = function (value, deep) {\n var result = this.predicate(value, deep);\n if (!result && typeof deep === \"function\") {\n deep(this, value);\n }\n return result;\n };\n return PredicateType;\n}(BaseType));\nvar Def = /** @class */ (function () {\n function Def(type, typeName) {\n this.type = type;\n this.typeName = typeName;\n this.baseNames = [];\n this.ownFields = Object.create(null);\n // Includes own typeName. Populated during finalization.\n this.allSupertypes = Object.create(null);\n // Linear inheritance hierarchy. Populated during finalization.\n this.supertypeList = [];\n // Includes inherited fields.\n this.allFields = Object.create(null);\n // Non-hidden keys of allFields.\n this.fieldNames = [];\n // This property will be overridden as true by individual Def instances\n // when they are finalized.\n this.finalized = false;\n // False by default until .build(...) is called on an instance.\n this.buildable = false;\n this.buildParams = [];\n }\n Def.prototype.isSupertypeOf = function (that) {\n if (that instanceof Def) {\n if (this.finalized !== true ||\n that.finalized !== true) {\n throw new Error(\"\");\n }\n return hasOwn.call(that.allSupertypes, this.typeName);\n }\n else {\n throw new Error(that + \" is not a Def\");\n }\n };\n Def.prototype.checkAllFields = function (value, deep) {\n var allFields = this.allFields;\n if (this.finalized !== true) {\n throw new Error(\"\" + this.typeName);\n }\n function checkFieldByName(name) {\n var field = allFields[name];\n var type = field.type;\n var child = field.getValue(value);\n return type.check(child, deep);\n }\n return value !== null &&\n typeof value === \"object\" &&\n Object.keys(allFields).every(checkFieldByName);\n };\n Def.prototype.bases = function () {\n var supertypeNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n supertypeNames[_i] = arguments[_i];\n }\n var bases = this.baseNames;\n if (this.finalized) {\n if (supertypeNames.length !== bases.length) {\n throw new Error(\"\");\n }\n for (var i = 0; i < supertypeNames.length; i++) {\n if (supertypeNames[i] !== bases[i]) {\n throw new Error(\"\");\n }\n }\n return this;\n }\n supertypeNames.forEach(function (baseName) {\n // This indexOf lookup may be O(n), but the typical number of base\n // names is very small, and indexOf is a native Array method.\n if (bases.indexOf(baseName) < 0) {\n bases.push(baseName);\n }\n });\n return this; // For chaining.\n };\n return Def;\n}());\nexports.Def = Def;\nvar Field = /** @class */ (function () {\n function Field(name, type, defaultFn, hidden) {\n this.name = name;\n this.type = type;\n this.defaultFn = defaultFn;\n this.hidden = !!hidden;\n }\n Field.prototype.toString = function () {\n return JSON.stringify(this.name) + \": \" + this.type;\n };\n Field.prototype.getValue = function (obj) {\n var value = obj[this.name];\n if (typeof value !== \"undefined\") {\n return value;\n }\n if (typeof this.defaultFn === \"function\") {\n value = this.defaultFn.call(obj);\n }\n return value;\n };\n return Field;\n}());\nfunction shallowStringify(value) {\n if (Array.isArray(value)) {\n return \"[\" + value.map(shallowStringify).join(\", \") + \"]\";\n }\n if (value && typeof value === \"object\") {\n return \"{ \" + Object.keys(value).map(function (key) {\n return key + \": \" + value[key];\n }).join(\", \") + \" }\";\n }\n return JSON.stringify(value);\n}\nfunction typesPlugin(_fork) {\n var Type = {\n or: function () {\n var types = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n types[_i] = arguments[_i];\n }\n return new OrType(types.map(function (type) { return Type.from(type); }));\n },\n from: function (value, name) {\n if (value instanceof ArrayType ||\n value instanceof IdentityType ||\n value instanceof ObjectType ||\n value instanceof OrType ||\n value instanceof PredicateType) {\n return value;\n }\n // The Def type is used as a helper for constructing compound\n // interface types for AST nodes.\n if (value instanceof Def) {\n return value.type;\n }\n // Support [ElemType] syntax.\n if (isArray.check(value)) {\n if (value.length !== 1) {\n throw new Error(\"only one element type is permitted for typed arrays\");\n }\n return new ArrayType(Type.from(value[0]));\n }\n // Support { someField: FieldType, ... } syntax.\n if (isObject.check(value)) {\n return new ObjectType(Object.keys(value).map(function (name) {\n return new Field(name, Type.from(value[name], name));\n }));\n }\n if (typeof value === \"function\") {\n var bicfIndex = builtInCtorFns.indexOf(value);\n if (bicfIndex >= 0) {\n return builtInCtorTypes[bicfIndex];\n }\n if (typeof name !== \"string\") {\n throw new Error(\"missing name\");\n }\n return new PredicateType(name, value);\n }\n // As a last resort, toType returns a type that matches any value that\n // is === from. This is primarily useful for literal values like\n // toType(null), but it has the additional advantage of allowing\n // toType to be a total function.\n return new IdentityType(value);\n },\n // Define a type whose name is registered in a namespace (the defCache) so\n // that future definitions will return the same type given the same name.\n // In particular, this system allows for circular and forward definitions.\n // The Def object d returned from Type.def may be used to configure the\n // type d.type by calling methods such as d.bases, d.build, and d.field.\n def: function (typeName) {\n return hasOwn.call(defCache, typeName)\n ? defCache[typeName]\n : defCache[typeName] = new DefImpl(typeName);\n },\n hasDef: function (typeName) {\n return hasOwn.call(defCache, typeName);\n }\n };\n var builtInCtorFns = [];\n var builtInCtorTypes = [];\n function defBuiltInType(name, example) {\n var objStr = objToStr.call(example);\n var type = new PredicateType(name, function (value) { return objToStr.call(value) === objStr; });\n if (example && typeof example.constructor === \"function\") {\n builtInCtorFns.push(example.constructor);\n builtInCtorTypes.push(type);\n }\n return type;\n }\n // These types check the underlying [[Class]] attribute of the given\n // value, rather than using the problematic typeof operator. Note however\n // that no subtyping is considered; so, for instance, isObject.check\n // returns false for [], /./, new Date, and null.\n var isString = defBuiltInType(\"string\", \"truthy\");\n var isFunction = defBuiltInType(\"function\", function () { });\n var isArray = defBuiltInType(\"array\", []);\n var isObject = defBuiltInType(\"object\", {});\n var isRegExp = defBuiltInType(\"RegExp\", /./);\n var isDate = defBuiltInType(\"Date\", new Date());\n var isNumber = defBuiltInType(\"number\", 3);\n var isBoolean = defBuiltInType(\"boolean\", true);\n var isNull = defBuiltInType(\"null\", null);\n var isUndefined = defBuiltInType(\"undefined\", undefined);\n var builtInTypes = {\n string: isString,\n function: isFunction,\n array: isArray,\n object: isObject,\n RegExp: isRegExp,\n Date: isDate,\n number: isNumber,\n boolean: isBoolean,\n null: isNull,\n undefined: isUndefined,\n };\n // In order to return the same Def instance every time Type.def is called\n // with a particular name, those instances need to be stored in a cache.\n var defCache = Object.create(null);\n function defFromValue(value) {\n if (value && typeof value === \"object\") {\n var type = value.type;\n if (typeof type === \"string\" &&\n hasOwn.call(defCache, type)) {\n var d = defCache[type];\n if (d.finalized) {\n return d;\n }\n }\n }\n return null;\n }\n var DefImpl = /** @class */ (function (_super) {\n tslib_1.__extends(DefImpl, _super);\n function DefImpl(typeName) {\n var _this = _super.call(this, new PredicateType(typeName, function (value, deep) { return _this.check(value, deep); }), typeName) || this;\n return _this;\n }\n DefImpl.prototype.check = function (value, deep) {\n if (this.finalized !== true) {\n throw new Error(\"prematurely checking unfinalized type \" + this.typeName);\n }\n // A Def type can only match an object value.\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n var vDef = defFromValue(value);\n if (!vDef) {\n // If we couldn't infer the Def associated with the given value,\n // and we expected it to be a SourceLocation or a Position, it was\n // probably just missing a \"type\" field (because Esprima does not\n // assign a type property to such nodes). Be optimistic and let\n // this.checkAllFields make the final decision.\n if (this.typeName === \"SourceLocation\" ||\n this.typeName === \"Position\") {\n return this.checkAllFields(value, deep);\n }\n // Calling this.checkAllFields for any other type of node is both\n // bad for performance and way too forgiving.\n return false;\n }\n // If checking deeply and vDef === this, then we only need to call\n // checkAllFields once. Calling checkAllFields is too strict when deep\n // is false, because then we only care about this.isSupertypeOf(vDef).\n if (deep && vDef === this) {\n return this.checkAllFields(value, deep);\n }\n // In most cases we rely exclusively on isSupertypeOf to make O(1)\n // subtyping determinations. This suffices in most situations outside\n // of unit tests, since interface conformance is checked whenever new\n // instances are created using builder functions.\n if (!this.isSupertypeOf(vDef)) {\n return false;\n }\n // The exception is when deep is true; then, we recursively check all\n // fields.\n if (!deep) {\n return true;\n }\n // Use the more specific Def (vDef) to perform the deep check, but\n // shallow-check fields defined by the less specific Def (this).\n return vDef.checkAllFields(value, deep)\n && this.checkAllFields(value, false);\n };\n DefImpl.prototype.build = function () {\n var _this = this;\n var buildParams = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n buildParams[_i] = arguments[_i];\n }\n // Calling Def.prototype.build multiple times has the effect of merely\n // redefining this property.\n this.buildParams = buildParams;\n if (this.buildable) {\n // If this Def is already buildable, update self.buildParams and\n // continue using the old builder function.\n return this;\n }\n // Every buildable type will have its \"type\" field filled in\n // automatically. This includes types that are not subtypes of Node,\n // like SourceLocation, but that seems harmless (TODO?).\n this.field(\"type\", String, function () { return _this.typeName; });\n // Override Dp.buildable for this Def instance.\n this.buildable = true;\n var addParam = function (built, param, arg, isArgAvailable) {\n if (hasOwn.call(built, param))\n return;\n var all = _this.allFields;\n if (!hasOwn.call(all, param)) {\n throw new Error(\"\" + param);\n }\n var field = all[param];\n var type = field.type;\n var value;\n if (isArgAvailable) {\n value = arg;\n }\n else if (field.defaultFn) {\n // Expose the partially-built object to the default\n // function as its `this` object.\n value = field.defaultFn.call(built);\n }\n else {\n var message = \"no value or default function given for field \" +\n JSON.stringify(param) + \" of \" + _this.typeName + \"(\" +\n _this.buildParams.map(function (name) {\n return all[name];\n }).join(\", \") + \")\";\n throw new Error(message);\n }\n if (!type.check(value)) {\n throw new Error(shallowStringify(value) +\n \" does not match field \" + field +\n \" of type \" + _this.typeName);\n }\n built[param] = value;\n };\n // Calling the builder function will construct an instance of the Def,\n // with positional arguments mapped to the fields original passed to .build.\n // If not enough arguments are provided, the default value for the remaining fields\n // will be used.\n var builder = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var argc = args.length;\n if (!_this.finalized) {\n throw new Error(\"attempting to instantiate unfinalized type \" +\n _this.typeName);\n }\n var built = Object.create(nodePrototype);\n _this.buildParams.forEach(function (param, i) {\n if (i < argc) {\n addParam(built, param, args[i], true);\n }\n else {\n addParam(built, param, null, false);\n }\n });\n Object.keys(_this.allFields).forEach(function (param) {\n // Use the default value.\n addParam(built, param, null, false);\n });\n // Make sure that the \"type\" field was filled automatically.\n if (built.type !== _this.typeName) {\n throw new Error(\"\");\n }\n return built;\n };\n // Calling .from on the builder function will construct an instance of the Def,\n // using field values from the passed object. For fields missing from the passed object,\n // their default value will be used.\n builder.from = function (obj) {\n if (!_this.finalized) {\n throw new Error(\"attempting to instantiate unfinalized type \" +\n _this.typeName);\n }\n var built = Object.create(nodePrototype);\n Object.keys(_this.allFields).forEach(function (param) {\n if (hasOwn.call(obj, param)) {\n addParam(built, param, obj[param], true);\n }\n else {\n addParam(built, param, null, false);\n }\n });\n // Make sure that the \"type\" field was filled automatically.\n if (built.type !== _this.typeName) {\n throw new Error(\"\");\n }\n return built;\n };\n Object.defineProperty(builders, getBuilderName(this.typeName), {\n enumerable: true,\n value: builder\n });\n return this;\n };\n // The reason fields are specified using .field(...) instead of an object\n // literal syntax is somewhat subtle: the object literal syntax would\n // support only one key and one value, but with .field(...) we can pass\n // any number of arguments to specify the field.\n DefImpl.prototype.field = function (name, type, defaultFn, hidden) {\n if (this.finalized) {\n console.error(\"Ignoring attempt to redefine field \" +\n JSON.stringify(name) + \" of finalized type \" +\n JSON.stringify(this.typeName));\n return this;\n }\n this.ownFields[name] = new Field(name, Type.from(type), defaultFn, hidden);\n return this; // For chaining.\n };\n DefImpl.prototype.finalize = function () {\n var _this = this;\n // It's not an error to finalize a type more than once, but only the\n // first call to .finalize does anything.\n if (!this.finalized) {\n var allFields = this.allFields;\n var allSupertypes = this.allSupertypes;\n this.baseNames.forEach(function (name) {\n var def = defCache[name];\n if (def instanceof Def) {\n def.finalize();\n extend(allFields, def.allFields);\n extend(allSupertypes, def.allSupertypes);\n }\n else {\n var message = \"unknown supertype name \" +\n JSON.stringify(name) +\n \" for subtype \" +\n JSON.stringify(_this.typeName);\n throw new Error(message);\n }\n });\n // TODO Warn if fields are overridden with incompatible types.\n extend(allFields, this.ownFields);\n allSupertypes[this.typeName] = this;\n this.fieldNames.length = 0;\n for (var fieldName in allFields) {\n if (hasOwn.call(allFields, fieldName) &&\n !allFields[fieldName].hidden) {\n this.fieldNames.push(fieldName);\n }\n }\n // Types are exported only once they have been finalized.\n Object.defineProperty(namedTypes, this.typeName, {\n enumerable: true,\n value: this.type\n });\n this.finalized = true;\n // A linearization of the inheritance hierarchy.\n populateSupertypeList(this.typeName, this.supertypeList);\n if (this.buildable &&\n this.supertypeList.lastIndexOf(\"Expression\") >= 0) {\n wrapExpressionBuilderWithStatement(this.typeName);\n }\n }\n };\n return DefImpl;\n }(Def));\n // Note that the list returned by this function is a copy of the internal\n // supertypeList, *without* the typeName itself as the first element.\n function getSupertypeNames(typeName) {\n if (!hasOwn.call(defCache, typeName)) {\n throw new Error(\"\");\n }\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n return d.supertypeList.slice(1);\n }\n // Returns an object mapping from every known type in the defCache to the\n // most specific supertype whose name is an own property of the candidates\n // object.\n function computeSupertypeLookupTable(candidates) {\n var table = {};\n var typeNames = Object.keys(defCache);\n var typeNameCount = typeNames.length;\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNames[i];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\" + typeName);\n }\n for (var j = 0; j < d.supertypeList.length; ++j) {\n var superTypeName = d.supertypeList[j];\n if (hasOwn.call(candidates, superTypeName)) {\n table[typeName] = superTypeName;\n break;\n }\n }\n }\n return table;\n }\n var builders = Object.create(null);\n // This object is used as prototype for any node created by a builder.\n var nodePrototype = {};\n // Call this function to define a new method to be shared by all AST\n // nodes. The replaced method (if any) is returned for easy wrapping.\n function defineMethod(name, func) {\n var old = nodePrototype[name];\n // Pass undefined as func to delete nodePrototype[name].\n if (isUndefined.check(func)) {\n delete nodePrototype[name];\n }\n else {\n isFunction.assert(func);\n Object.defineProperty(nodePrototype, name, {\n enumerable: true,\n configurable: true,\n value: func\n });\n }\n return old;\n }\n function getBuilderName(typeName) {\n return typeName.replace(/^[A-Z]+/, function (upperCasePrefix) {\n var len = upperCasePrefix.length;\n switch (len) {\n case 0: return \"\";\n // If there's only one initial capital letter, just lower-case it.\n case 1: return upperCasePrefix.toLowerCase();\n default:\n // If there's more than one initial capital letter, lower-case\n // all but the last one, so that XMLDefaultDeclaration (for\n // example) becomes xmlDefaultDeclaration.\n return upperCasePrefix.slice(0, len - 1).toLowerCase() +\n upperCasePrefix.charAt(len - 1);\n }\n });\n }\n function getStatementBuilderName(typeName) {\n typeName = getBuilderName(typeName);\n return typeName.replace(/(Expression)?$/, \"Statement\");\n }\n var namedTypes = {};\n // Like Object.keys, but aware of what fields each AST type should have.\n function getFieldNames(object) {\n var d = defFromValue(object);\n if (d) {\n return d.fieldNames.slice(0);\n }\n if (\"type\" in object) {\n throw new Error(\"did not recognize object of type \" +\n JSON.stringify(object.type));\n }\n return Object.keys(object);\n }\n // Get the value of an object property, taking object.type and default\n // functions into account.\n function getFieldValue(object, fieldName) {\n var d = defFromValue(object);\n if (d) {\n var field = d.allFields[fieldName];\n if (field) {\n return field.getValue(object);\n }\n }\n return object && object[fieldName];\n }\n // Iterate over all defined fields of an object, including those missing\n // or undefined, passing each field name and effective value (as returned\n // by getFieldValue) to the callback. If the object has no corresponding\n // Def, the callback will never be called.\n function eachField(object, callback, context) {\n getFieldNames(object).forEach(function (name) {\n callback.call(this, name, getFieldValue(object, name));\n }, context);\n }\n // Similar to eachField, except that iteration stops as soon as the\n // callback returns a truthy value. Like Array.prototype.some, the final\n // result is either true or false to indicates whether the callback\n // returned true for any element or not.\n function someField(object, callback, context) {\n return getFieldNames(object).some(function (name) {\n return callback.call(this, name, getFieldValue(object, name));\n }, context);\n }\n // Adds an additional builder for Expression subtypes\n // that wraps the built Expression in an ExpressionStatements.\n function wrapExpressionBuilderWithStatement(typeName) {\n var wrapperName = getStatementBuilderName(typeName);\n // skip if the builder already exists\n if (builders[wrapperName])\n return;\n // the builder function to wrap with builders.ExpressionStatement\n var wrapped = builders[getBuilderName(typeName)];\n // skip if there is nothing to wrap\n if (!wrapped)\n return;\n var builder = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return builders.expressionStatement(wrapped.apply(builders, args));\n };\n builder.from = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return builders.expressionStatement(wrapped.from.apply(builders, args));\n };\n builders[wrapperName] = builder;\n }\n function populateSupertypeList(typeName, list) {\n list.length = 0;\n list.push(typeName);\n var lastSeen = Object.create(null);\n for (var pos = 0; pos < list.length; ++pos) {\n typeName = list[pos];\n var d = defCache[typeName];\n if (d.finalized !== true) {\n throw new Error(\"\");\n }\n // If we saw typeName earlier in the breadth-first traversal,\n // delete the last-seen occurrence.\n if (hasOwn.call(lastSeen, typeName)) {\n delete list[lastSeen[typeName]];\n }\n // Record the new index of the last-seen occurrence of typeName.\n lastSeen[typeName] = pos;\n // Enqueue the base names of this type.\n list.push.apply(list, d.baseNames);\n }\n // Compaction loop to remove array holes.\n for (var to = 0, from = to, len = list.length; from < len; ++from) {\n if (hasOwn.call(list, from)) {\n list[to++] = list[from];\n }\n }\n list.length = to;\n }\n function extend(into, from) {\n Object.keys(from).forEach(function (name) {\n into[name] = from[name];\n });\n return into;\n }\n function finalize() {\n Object.keys(defCache).forEach(function (name) {\n defCache[name].finalize();\n });\n }\n return {\n Type: Type,\n builtInTypes: builtInTypes,\n getSupertypeNames: getSupertypeNames,\n computeSupertypeLookupTable: computeSupertypeLookupTable,\n builders: builders,\n defineMethod: defineMethod,\n getBuilderName: getBuilderName,\n getStatementBuilderName: getStatementBuilderName,\n namedTypes: namedTypes,\n getFieldNames: getFieldNames,\n getFieldValue: getFieldValue,\n eachField: eachField,\n someField: someField,\n finalize: finalize,\n };\n}\nexports.default = typesPlugin;\n;\n",
17
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar Op = Object.prototype;\nvar hasOwn = Op.hasOwnProperty;\nfunction pathPlugin(fork) {\n var types = fork.use(types_1.default);\n var isArray = types.builtInTypes.array;\n var isNumber = types.builtInTypes.number;\n var Path = function Path(value, parentPath, name) {\n if (!(this instanceof Path)) {\n throw new Error(\"Path constructor cannot be invoked without 'new'\");\n }\n if (parentPath) {\n if (!(parentPath instanceof Path)) {\n throw new Error(\"\");\n }\n }\n else {\n parentPath = null;\n name = null;\n }\n // The value encapsulated by this Path, generally equal to\n // parentPath.value[name] if we have a parentPath.\n this.value = value;\n // The immediate parent Path of this Path.\n this.parentPath = parentPath;\n // The name of the property of parentPath.value through which this\n // Path's value was reached.\n this.name = name;\n // Calling path.get(\"child\") multiple times always returns the same\n // child Path object, for both performance and consistency reasons.\n this.__childCache = null;\n };\n var Pp = Path.prototype;\n function getChildCache(path) {\n // Lazily create the child cache. This also cheapens cache\n // invalidation, since you can just reset path.__childCache to null.\n return path.__childCache || (path.__childCache = Object.create(null));\n }\n function getChildPath(path, name) {\n var cache = getChildCache(path);\n var actualChildValue = path.getValueProperty(name);\n var childPath = cache[name];\n if (!hasOwn.call(cache, name) ||\n // Ensure consistency between cache and reality.\n childPath.value !== actualChildValue) {\n childPath = cache[name] = new path.constructor(actualChildValue, path, name);\n }\n return childPath;\n }\n // This method is designed to be overridden by subclasses that need to\n // handle missing properties, etc.\n Pp.getValueProperty = function getValueProperty(name) {\n return this.value[name];\n };\n Pp.get = function get() {\n var names = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n names[_i] = arguments[_i];\n }\n var path = this;\n var count = names.length;\n for (var i = 0; i < count; ++i) {\n path = getChildPath(path, names[i]);\n }\n return path;\n };\n Pp.each = function each(callback, context) {\n var childPaths = [];\n var len = this.value.length;\n var i = 0;\n // Collect all the original child paths before invoking the callback.\n for (var i = 0; i < len; ++i) {\n if (hasOwn.call(this.value, i)) {\n childPaths[i] = this.get(i);\n }\n }\n // Invoke the callback on just the original child paths, regardless of\n // any modifications made to the array by the callback. I chose these\n // semantics over cleverly invoking the callback on new elements because\n // this way is much easier to reason about.\n context = context || this;\n for (i = 0; i < len; ++i) {\n if (hasOwn.call(childPaths, i)) {\n callback.call(context, childPaths[i]);\n }\n }\n };\n Pp.map = function map(callback, context) {\n var result = [];\n this.each(function (childPath) {\n result.push(callback.call(this, childPath));\n }, context);\n return result;\n };\n Pp.filter = function filter(callback, context) {\n var result = [];\n this.each(function (childPath) {\n if (callback.call(this, childPath)) {\n result.push(childPath);\n }\n }, context);\n return result;\n };\n function emptyMoves() { }\n function getMoves(path, offset, start, end) {\n isArray.assert(path.value);\n if (offset === 0) {\n return emptyMoves;\n }\n var length = path.value.length;\n if (length < 1) {\n return emptyMoves;\n }\n var argc = arguments.length;\n if (argc === 2) {\n start = 0;\n end = length;\n }\n else if (argc === 3) {\n start = Math.max(start, 0);\n end = length;\n }\n else {\n start = Math.max(start, 0);\n end = Math.min(end, length);\n }\n isNumber.assert(start);\n isNumber.assert(end);\n var moves = Object.create(null);\n var cache = getChildCache(path);\n for (var i = start; i < end; ++i) {\n if (hasOwn.call(path.value, i)) {\n var childPath = path.get(i);\n if (childPath.name !== i) {\n throw new Error(\"\");\n }\n var newIndex = i + offset;\n childPath.name = newIndex;\n moves[newIndex] = childPath;\n delete cache[i];\n }\n }\n delete cache.length;\n return function () {\n for (var newIndex in moves) {\n var childPath = moves[newIndex];\n if (childPath.name !== +newIndex) {\n throw new Error(\"\");\n }\n cache[newIndex] = childPath;\n path.value[newIndex] = childPath.value;\n }\n };\n }\n Pp.shift = function shift() {\n var move = getMoves(this, -1);\n var result = this.value.shift();\n move();\n return result;\n };\n Pp.unshift = function unshift() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var move = getMoves(this, args.length);\n var result = this.value.unshift.apply(this.value, args);\n move();\n return result;\n };\n Pp.push = function push() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n isArray.assert(this.value);\n delete getChildCache(this).length;\n return this.value.push.apply(this.value, args);\n };\n Pp.pop = function pop() {\n isArray.assert(this.value);\n var cache = getChildCache(this);\n delete cache[this.value.length - 1];\n delete cache.length;\n return this.value.pop();\n };\n Pp.insertAt = function insertAt(index) {\n var argc = arguments.length;\n var move = getMoves(this, argc - 1, index);\n if (move === emptyMoves && argc <= 1) {\n return this;\n }\n index = Math.max(index, 0);\n for (var i = 1; i < argc; ++i) {\n this.value[index + i - 1] = arguments[i];\n }\n move();\n return this;\n };\n Pp.insertBefore = function insertBefore() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pp = this.parentPath;\n var argc = args.length;\n var insertAtArgs = [this.name];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(args[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n };\n Pp.insertAfter = function insertAfter() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var pp = this.parentPath;\n var argc = args.length;\n var insertAtArgs = [this.name + 1];\n for (var i = 0; i < argc; ++i) {\n insertAtArgs.push(args[i]);\n }\n return pp.insertAt.apply(pp, insertAtArgs);\n };\n function repairRelationshipWithParent(path) {\n if (!(path instanceof Path)) {\n throw new Error(\"\");\n }\n var pp = path.parentPath;\n if (!pp) {\n // Orphan paths have no relationship to repair.\n return path;\n }\n var parentValue = pp.value;\n var parentCache = getChildCache(pp);\n // Make sure parentCache[path.name] is populated.\n if (parentValue[path.name] === path.value) {\n parentCache[path.name] = path;\n }\n else if (isArray.check(parentValue)) {\n // Something caused path.name to become out of date, so attempt to\n // recover by searching for path.value in parentValue.\n var i = parentValue.indexOf(path.value);\n if (i >= 0) {\n parentCache[path.name = i] = path;\n }\n }\n else {\n // If path.value disagrees with parentValue[path.name], and\n // path.name is not an array index, let path.value become the new\n // parentValue[path.name] and update parentCache accordingly.\n parentValue[path.name] = path.value;\n parentCache[path.name] = path;\n }\n if (parentValue[path.name] !== path.value) {\n throw new Error(\"\");\n }\n if (path.parentPath.get(path.name) !== path) {\n throw new Error(\"\");\n }\n return path;\n }\n Pp.replace = function replace(replacement) {\n var results = [];\n var parentValue = this.parentPath.value;\n var parentCache = getChildCache(this.parentPath);\n var count = arguments.length;\n repairRelationshipWithParent(this);\n if (isArray.check(parentValue)) {\n var originalLength = parentValue.length;\n var move = getMoves(this.parentPath, count - 1, this.name + 1);\n var spliceArgs = [this.name, 1];\n for (var i = 0; i < count; ++i) {\n spliceArgs.push(arguments[i]);\n }\n var splicedOut = parentValue.splice.apply(parentValue, spliceArgs);\n if (splicedOut[0] !== this.value) {\n throw new Error(\"\");\n }\n if (parentValue.length !== (originalLength - 1 + count)) {\n throw new Error(\"\");\n }\n move();\n if (count === 0) {\n delete this.value;\n delete parentCache[this.name];\n this.__childCache = null;\n }\n else {\n if (parentValue[this.name] !== replacement) {\n throw new Error(\"\");\n }\n if (this.value !== replacement) {\n this.value = replacement;\n this.__childCache = null;\n }\n for (i = 0; i < count; ++i) {\n results.push(this.parentPath.get(this.name + i));\n }\n if (results[0] !== this) {\n throw new Error(\"\");\n }\n }\n }\n else if (count === 1) {\n if (this.value !== replacement) {\n this.__childCache = null;\n }\n this.value = parentValue[this.name] = replacement;\n results.push(this);\n }\n else if (count === 0) {\n delete parentValue[this.name];\n delete this.value;\n this.__childCache = null;\n // Leave this path cached as parentCache[this.name], even though\n // it no longer has a value defined.\n }\n else {\n throw new Error(\"Could not replace path\");\n }\n return results;\n };\n return Path;\n}\nexports.default = pathPlugin;\nmodule.exports = exports[\"default\"];\n",
18
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction scopePlugin(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var namedTypes = types.namedTypes;\n var Node = namedTypes.Node;\n var Expression = namedTypes.Expression;\n var isArray = types.builtInTypes.array;\n var b = types.builders;\n var Scope = function Scope(path, parentScope) {\n if (!(this instanceof Scope)) {\n throw new Error(\"Scope constructor cannot be invoked without 'new'\");\n }\n ScopeType.assert(path.value);\n var depth;\n if (parentScope) {\n if (!(parentScope instanceof Scope)) {\n throw new Error(\"\");\n }\n depth = parentScope.depth + 1;\n }\n else {\n parentScope = null;\n depth = 0;\n }\n Object.defineProperties(this, {\n path: { value: path },\n node: { value: path.value },\n isGlobal: { value: !parentScope, enumerable: true },\n depth: { value: depth },\n parent: { value: parentScope },\n bindings: { value: {} },\n types: { value: {} },\n });\n };\n var scopeTypes = [\n // Program nodes introduce global scopes.\n namedTypes.Program,\n // Function is the supertype of FunctionExpression,\n // FunctionDeclaration, ArrowExpression, etc.\n namedTypes.Function,\n // In case you didn't know, the caught parameter shadows any variable\n // of the same name in an outer scope.\n namedTypes.CatchClause\n ];\n var ScopeType = Type.or.apply(Type, scopeTypes);\n Scope.isEstablishedBy = function (node) {\n return ScopeType.check(node);\n };\n var Sp = Scope.prototype;\n // Will be overridden after an instance lazily calls scanScope.\n Sp.didScan = false;\n Sp.declares = function (name) {\n this.scan();\n return hasOwn.call(this.bindings, name);\n };\n Sp.declaresType = function (name) {\n this.scan();\n return hasOwn.call(this.types, name);\n };\n Sp.declareTemporary = function (prefix) {\n if (prefix) {\n if (!/^[a-z$_]/i.test(prefix)) {\n throw new Error(\"\");\n }\n }\n else {\n prefix = \"t$\";\n }\n // Include this.depth in the name to make sure the name does not\n // collide with any variables in nested/enclosing scopes.\n prefix += this.depth.toString(36) + \"$\";\n this.scan();\n var index = 0;\n while (this.declares(prefix + index)) {\n ++index;\n }\n var name = prefix + index;\n return this.bindings[name] = types.builders.identifier(name);\n };\n Sp.injectTemporary = function (identifier, init) {\n identifier || (identifier = this.declareTemporary());\n var bodyPath = this.path.get(\"body\");\n if (namedTypes.BlockStatement.check(bodyPath.value)) {\n bodyPath = bodyPath.get(\"body\");\n }\n bodyPath.unshift(b.variableDeclaration(\"var\", [b.variableDeclarator(identifier, init || null)]));\n return identifier;\n };\n Sp.scan = function (force) {\n if (force || !this.didScan) {\n for (var name in this.bindings) {\n // Empty out this.bindings, just in cases.\n delete this.bindings[name];\n }\n scanScope(this.path, this.bindings, this.types);\n this.didScan = true;\n }\n };\n Sp.getBindings = function () {\n this.scan();\n return this.bindings;\n };\n Sp.getTypes = function () {\n this.scan();\n return this.types;\n };\n function scanScope(path, bindings, scopeTypes) {\n var node = path.value;\n ScopeType.assert(node);\n if (namedTypes.CatchClause.check(node)) {\n // A catch clause establishes a new scope but the only variable\n // bound in that scope is the catch parameter. Any other\n // declarations create bindings in the outer scope.\n var param = path.get(\"param\");\n if (param.value) {\n addPattern(param, bindings);\n }\n }\n else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n }\n function recursiveScanScope(path, bindings, scopeTypes) {\n var node = path.value;\n if (path.parent &&\n namedTypes.FunctionExpression.check(path.parent.node) &&\n path.parent.node.id) {\n addPattern(path.parent.get(\"id\"), bindings);\n }\n if (!node) {\n // None of the remaining cases matter if node is falsy.\n }\n else if (isArray.check(node)) {\n path.each(function (childPath) {\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n }\n else if (namedTypes.Function.check(node)) {\n path.get(\"params\").each(function (paramPath) {\n addPattern(paramPath, bindings);\n });\n recursiveScanChild(path.get(\"body\"), bindings, scopeTypes);\n }\n else if ((namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) ||\n (namedTypes.InterfaceDeclaration && namedTypes.InterfaceDeclaration.check(node)) ||\n (namedTypes.TSTypeAliasDeclaration && namedTypes.TSTypeAliasDeclaration.check(node)) ||\n (namedTypes.TSInterfaceDeclaration && namedTypes.TSInterfaceDeclaration.check(node))) {\n addTypePattern(path.get(\"id\"), scopeTypes);\n }\n else if (namedTypes.VariableDeclarator.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n recursiveScanChild(path.get(\"init\"), bindings, scopeTypes);\n }\n else if (node.type === \"ImportSpecifier\" ||\n node.type === \"ImportNamespaceSpecifier\" ||\n node.type === \"ImportDefaultSpecifier\") {\n addPattern(\n // Esprima used to use the .name field to refer to the local\n // binding identifier for ImportSpecifier nodes, but .id for\n // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes.\n // ESTree/Acorn/ESpree use .local for all three node types.\n path.get(node.local ? \"local\" :\n node.name ? \"name\" : \"id\"), bindings);\n }\n else if (Node.check(node) && !Expression.check(node)) {\n types.eachField(node, function (name, child) {\n var childPath = path.get(name);\n if (!pathHasValue(childPath, child)) {\n throw new Error(\"\");\n }\n recursiveScanChild(childPath, bindings, scopeTypes);\n });\n }\n }\n function pathHasValue(path, value) {\n if (path.value === value) {\n return true;\n }\n // Empty arrays are probably produced by defaults.emptyArray, in which\n // case is makes sense to regard them as equivalent, if not ===.\n if (Array.isArray(path.value) &&\n path.value.length === 0 &&\n Array.isArray(value) &&\n value.length === 0) {\n return true;\n }\n return false;\n }\n function recursiveScanChild(path, bindings, scopeTypes) {\n var node = path.value;\n if (!node || Expression.check(node)) {\n // Ignore falsy values and Expressions.\n }\n else if (namedTypes.FunctionDeclaration.check(node) &&\n node.id !== null) {\n addPattern(path.get(\"id\"), bindings);\n }\n else if (namedTypes.ClassDeclaration &&\n namedTypes.ClassDeclaration.check(node)) {\n addPattern(path.get(\"id\"), bindings);\n }\n else if (ScopeType.check(node)) {\n if (namedTypes.CatchClause.check(node) &&\n // TODO Broaden this to accept any pattern.\n namedTypes.Identifier.check(node.param)) {\n var catchParamName = node.param.name;\n var hadBinding = hasOwn.call(bindings, catchParamName);\n // Any declarations that occur inside the catch body that do\n // not have the same name as the catch parameter should count\n // as bindings in the outer scope.\n recursiveScanScope(path.get(\"body\"), bindings, scopeTypes);\n // If a new binding matching the catch parameter name was\n // created while scanning the catch body, ignore it because it\n // actually refers to the catch parameter and not the outer\n // scope that we're currently scanning.\n if (!hadBinding) {\n delete bindings[catchParamName];\n }\n }\n }\n else {\n recursiveScanScope(path, bindings, scopeTypes);\n }\n }\n function addPattern(patternPath, bindings) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(bindings, pattern.name)) {\n bindings[pattern.name].push(patternPath);\n }\n else {\n bindings[pattern.name] = [patternPath];\n }\n }\n else if (namedTypes.AssignmentPattern &&\n namedTypes.AssignmentPattern.check(pattern)) {\n addPattern(patternPath.get('left'), bindings);\n }\n else if (namedTypes.ObjectPattern &&\n namedTypes.ObjectPattern.check(pattern)) {\n patternPath.get('properties').each(function (propertyPath) {\n var property = propertyPath.value;\n if (namedTypes.Pattern.check(property)) {\n addPattern(propertyPath, bindings);\n }\n else if (namedTypes.Property.check(property)) {\n addPattern(propertyPath.get('value'), bindings);\n }\n else if (namedTypes.SpreadProperty &&\n namedTypes.SpreadProperty.check(property)) {\n addPattern(propertyPath.get('argument'), bindings);\n }\n });\n }\n else if (namedTypes.ArrayPattern &&\n namedTypes.ArrayPattern.check(pattern)) {\n patternPath.get('elements').each(function (elementPath) {\n var element = elementPath.value;\n if (namedTypes.Pattern.check(element)) {\n addPattern(elementPath, bindings);\n }\n else if (namedTypes.SpreadElement &&\n namedTypes.SpreadElement.check(element)) {\n addPattern(elementPath.get(\"argument\"), bindings);\n }\n });\n }\n else if (namedTypes.PropertyPattern &&\n namedTypes.PropertyPattern.check(pattern)) {\n addPattern(patternPath.get('pattern'), bindings);\n }\n else if ((namedTypes.SpreadElementPattern &&\n namedTypes.SpreadElementPattern.check(pattern)) ||\n (namedTypes.RestElement &&\n namedTypes.RestElement.check(pattern)) ||\n (namedTypes.SpreadPropertyPattern &&\n namedTypes.SpreadPropertyPattern.check(pattern))) {\n addPattern(patternPath.get('argument'), bindings);\n }\n }\n function addTypePattern(patternPath, types) {\n var pattern = patternPath.value;\n namedTypes.Pattern.assert(pattern);\n if (namedTypes.Identifier.check(pattern)) {\n if (hasOwn.call(types, pattern.name)) {\n types[pattern.name].push(patternPath);\n }\n else {\n types[pattern.name] = [patternPath];\n }\n }\n }\n Sp.lookup = function (name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declares(name))\n break;\n return scope;\n };\n Sp.lookupType = function (name) {\n for (var scope = this; scope; scope = scope.parent)\n if (scope.declaresType(name))\n break;\n return scope;\n };\n Sp.getGlobalScope = function () {\n var scope = this;\n while (!scope.isGlobal)\n scope = scope.parent;\n return scope;\n };\n return Scope;\n}\nexports.default = scopePlugin;\nmodule.exports = exports[\"default\"];\n",
19
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar path_1 = tslib_1.__importDefault(require(\"./path\"));\nvar scope_1 = tslib_1.__importDefault(require(\"./scope\"));\nfunction nodePathPlugin(fork) {\n var types = fork.use(types_1.default);\n var n = types.namedTypes;\n var b = types.builders;\n var isNumber = types.builtInTypes.number;\n var isArray = types.builtInTypes.array;\n var Path = fork.use(path_1.default);\n var Scope = fork.use(scope_1.default);\n var NodePath = function NodePath(value, parentPath, name) {\n if (!(this instanceof NodePath)) {\n throw new Error(\"NodePath constructor cannot be invoked without 'new'\");\n }\n Path.call(this, value, parentPath, name);\n };\n var NPp = NodePath.prototype = Object.create(Path.prototype, {\n constructor: {\n value: NodePath,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperties(NPp, {\n node: {\n get: function () {\n Object.defineProperty(this, \"node\", {\n configurable: true,\n value: this._computeNode()\n });\n return this.node;\n }\n },\n parent: {\n get: function () {\n Object.defineProperty(this, \"parent\", {\n configurable: true,\n value: this._computeParent()\n });\n return this.parent;\n }\n },\n scope: {\n get: function () {\n Object.defineProperty(this, \"scope\", {\n configurable: true,\n value: this._computeScope()\n });\n return this.scope;\n }\n }\n });\n NPp.replace = function () {\n delete this.node;\n delete this.parent;\n delete this.scope;\n return Path.prototype.replace.apply(this, arguments);\n };\n NPp.prune = function () {\n var remainingNodePath = this.parent;\n this.replace();\n return cleanUpNodesAfterPrune(remainingNodePath);\n };\n // The value of the first ancestor Path whose value is a Node.\n NPp._computeNode = function () {\n var value = this.value;\n if (n.Node.check(value)) {\n return value;\n }\n var pp = this.parentPath;\n return pp && pp.node || null;\n };\n // The first ancestor Path whose value is a Node distinct from this.node.\n NPp._computeParent = function () {\n var value = this.value;\n var pp = this.parentPath;\n if (!n.Node.check(value)) {\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n if (pp) {\n pp = pp.parentPath;\n }\n }\n while (pp && !n.Node.check(pp.value)) {\n pp = pp.parentPath;\n }\n return pp || null;\n };\n // The closest enclosing scope that governs this node.\n NPp._computeScope = function () {\n var value = this.value;\n var pp = this.parentPath;\n var scope = pp && pp.scope;\n if (n.Node.check(value) &&\n Scope.isEstablishedBy(value)) {\n scope = new Scope(this, scope);\n }\n return scope || null;\n };\n NPp.getValueProperty = function (name) {\n return types.getFieldValue(this.value, name);\n };\n /**\n * Determine whether this.node needs to be wrapped in parentheses in order\n * for a parser to reproduce the same local AST structure.\n *\n * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression\n * whose operator is \"+\" needs parentheses, because `1 + 2 * 3` would\n * parse differently.\n *\n * If assumeExpressionContext === true, we don't worry about edge cases\n * like an anonymous FunctionExpression appearing lexically first in its\n * enclosing statement and thus needing parentheses to avoid being parsed\n * as a FunctionDeclaration with a missing name.\n */\n NPp.needsParens = function (assumeExpressionContext) {\n var pp = this.parentPath;\n if (!pp) {\n return false;\n }\n var node = this.value;\n // Only expressions need parentheses.\n if (!n.Expression.check(node)) {\n return false;\n }\n // Identifiers never need parentheses.\n if (node.type === \"Identifier\") {\n return false;\n }\n while (!n.Node.check(pp.value)) {\n pp = pp.parentPath;\n if (!pp) {\n return false;\n }\n }\n var parent = pp.value;\n switch (node.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return parent.type === \"MemberExpression\"\n && this.name === \"object\"\n && parent.object === node;\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n switch (parent.type) {\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n return true;\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n case \"BinaryExpression\":\n case \"LogicalExpression\": {\n var n_1 = node;\n var po = parent.operator;\n var pp_1 = PRECEDENCE[po];\n var no = n_1.operator;\n var np = PRECEDENCE[no];\n if (pp_1 > np) {\n return true;\n }\n if (pp_1 === np && this.name === \"right\") {\n if (parent.right !== n_1) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n }\n default:\n return false;\n }\n case \"SequenceExpression\":\n switch (parent.type) {\n case \"ForStatement\":\n // Although parentheses wouldn't hurt around sequence\n // expressions in the head of for loops, traditional style\n // dictates that e.g. i++, j++ should not be wrapped with\n // parentheses.\n return false;\n case \"ExpressionStatement\":\n return this.name !== \"expression\";\n default:\n // Otherwise err on the side of overparenthesization, adding\n // explicit exceptions above if this proves overzealous.\n return true;\n }\n case \"YieldExpression\":\n switch (parent.type) {\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"CallExpression\":\n case \"MemberExpression\":\n case \"NewExpression\":\n case \"ConditionalExpression\":\n case \"YieldExpression\":\n return true;\n default:\n return false;\n }\n case \"Literal\":\n return parent.type === \"MemberExpression\"\n && isNumber.check(node.value)\n && this.name === \"object\"\n && parent.object === node;\n case \"AssignmentExpression\":\n case \"ConditionalExpression\":\n switch (parent.type) {\n case \"UnaryExpression\":\n case \"SpreadElement\":\n case \"SpreadProperty\":\n case \"BinaryExpression\":\n case \"LogicalExpression\":\n return true;\n case \"CallExpression\":\n return this.name === \"callee\"\n && parent.callee === node;\n case \"ConditionalExpression\":\n return this.name === \"test\"\n && parent.test === node;\n case \"MemberExpression\":\n return this.name === \"object\"\n && parent.object === node;\n default:\n return false;\n }\n default:\n if (parent.type === \"NewExpression\" &&\n this.name === \"callee\" &&\n parent.callee === node) {\n return containsCallExpression(node);\n }\n }\n if (assumeExpressionContext !== true &&\n !this.canBeFirstInStatement() &&\n this.firstInStatement())\n return true;\n return false;\n };\n function isBinary(node) {\n return n.BinaryExpression.check(node)\n || n.LogicalExpression.check(node);\n }\n // @ts-ignore 'isUnaryLike' is declared but its value is never read. [6133]\n function isUnaryLike(node) {\n return n.UnaryExpression.check(node)\n // I considered making SpreadElement and SpreadProperty subtypes\n // of UnaryExpression, but they're not really Expression nodes.\n || (n.SpreadElement && n.SpreadElement.check(node))\n || (n.SpreadProperty && n.SpreadProperty.check(node));\n }\n var PRECEDENCE = {};\n [[\"||\"],\n [\"&&\"],\n [\"|\"],\n [\"^\"],\n [\"&\"],\n [\"==\", \"===\", \"!=\", \"!==\"],\n [\"<\", \">\", \"<=\", \">=\", \"in\", \"instanceof\"],\n [\">>\", \"<<\", \">>>\"],\n [\"+\", \"-\"],\n [\"*\", \"/\", \"%\"]\n ].forEach(function (tier, i) {\n tier.forEach(function (op) {\n PRECEDENCE[op] = i;\n });\n });\n function containsCallExpression(node) {\n if (n.CallExpression.check(node)) {\n return true;\n }\n if (isArray.check(node)) {\n return node.some(containsCallExpression);\n }\n if (n.Node.check(node)) {\n return types.someField(node, function (_name, child) {\n return containsCallExpression(child);\n });\n }\n return false;\n }\n NPp.canBeFirstInStatement = function () {\n var node = this.node;\n return !n.FunctionExpression.check(node)\n && !n.ObjectExpression.check(node);\n };\n NPp.firstInStatement = function () {\n return firstInStatement(this);\n };\n function firstInStatement(path) {\n for (var node, parent; path.parent; path = path.parent) {\n node = path.node;\n parent = path.parent.node;\n if (n.BlockStatement.check(parent) &&\n path.parent.name === \"body\" &&\n path.name === 0) {\n if (parent.body[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n if (n.ExpressionStatement.check(parent) &&\n path.name === \"expression\") {\n if (parent.expression !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n return true;\n }\n if (n.SequenceExpression.check(parent) &&\n path.parent.name === \"expressions\" &&\n path.name === 0) {\n if (parent.expressions[0] !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.CallExpression.check(parent) &&\n path.name === \"callee\") {\n if (parent.callee !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.MemberExpression.check(parent) &&\n path.name === \"object\") {\n if (parent.object !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.ConditionalExpression.check(parent) &&\n path.name === \"test\") {\n if (parent.test !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (isBinary(parent) &&\n path.name === \"left\") {\n if (parent.left !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n if (n.UnaryExpression.check(parent) &&\n !parent.prefix &&\n path.name === \"argument\") {\n if (parent.argument !== node) {\n throw new Error(\"Nodes must be equal\");\n }\n continue;\n }\n return false;\n }\n return true;\n }\n /**\n * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up.\n */\n function cleanUpNodesAfterPrune(remainingNodePath) {\n if (n.VariableDeclaration.check(remainingNodePath.node)) {\n var declarations = remainingNodePath.get('declarations').value;\n if (!declarations || declarations.length === 0) {\n return remainingNodePath.prune();\n }\n }\n else if (n.ExpressionStatement.check(remainingNodePath.node)) {\n if (!remainingNodePath.get('expression').value) {\n return remainingNodePath.prune();\n }\n }\n else if (n.IfStatement.check(remainingNodePath.node)) {\n cleanUpIfStatementAfterPrune(remainingNodePath);\n }\n return remainingNodePath;\n }\n function cleanUpIfStatementAfterPrune(ifStatement) {\n var testExpression = ifStatement.get('test').value;\n var alternate = ifStatement.get('alternate').value;\n var consequent = ifStatement.get('consequent').value;\n if (!consequent && !alternate) {\n var testExpressionStatement = b.expressionStatement(testExpression);\n ifStatement.replace(testExpressionStatement);\n }\n else if (!consequent && alternate) {\n var negatedTestExpression = b.unaryExpression('!', testExpression, true);\n if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') {\n negatedTestExpression = testExpression.argument;\n }\n ifStatement.get(\"test\").replace(negatedTestExpression);\n ifStatement.get(\"consequent\").replace(alternate);\n ifStatement.get(\"alternate\").replace();\n }\n }\n return NodePath;\n}\nexports.default = nodePathPlugin;\nmodule.exports = exports[\"default\"];\n",
20
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nvar node_path_1 = tslib_1.__importDefault(require(\"./node-path\"));\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction pathVisitorPlugin(fork) {\n var types = fork.use(types_1.default);\n var NodePath = fork.use(node_path_1.default);\n var isArray = types.builtInTypes.array;\n var isObject = types.builtInTypes.object;\n var isFunction = types.builtInTypes.function;\n var undefined;\n var PathVisitor = function PathVisitor() {\n if (!(this instanceof PathVisitor)) {\n throw new Error(\"PathVisitor constructor cannot be invoked without 'new'\");\n }\n // Permanent state.\n this._reusableContextStack = [];\n this._methodNameTable = computeMethodNameTable(this);\n this._shouldVisitComments =\n hasOwn.call(this._methodNameTable, \"Block\") ||\n hasOwn.call(this._methodNameTable, \"Line\");\n this.Context = makeContextConstructor(this);\n // State reset every time PathVisitor.prototype.visit is called.\n this._visiting = false;\n this._changeReported = false;\n };\n function computeMethodNameTable(visitor) {\n var typeNames = Object.create(null);\n for (var methodName in visitor) {\n if (/^visit[A-Z]/.test(methodName)) {\n typeNames[methodName.slice(\"visit\".length)] = true;\n }\n }\n var supertypeTable = types.computeSupertypeLookupTable(typeNames);\n var methodNameTable = Object.create(null);\n var typeNameKeys = Object.keys(supertypeTable);\n var typeNameCount = typeNameKeys.length;\n for (var i = 0; i < typeNameCount; ++i) {\n var typeName = typeNameKeys[i];\n methodName = \"visit\" + supertypeTable[typeName];\n if (isFunction.check(visitor[methodName])) {\n methodNameTable[typeName] = methodName;\n }\n }\n return methodNameTable;\n }\n PathVisitor.fromMethodsObject = function fromMethodsObject(methods) {\n if (methods instanceof PathVisitor) {\n return methods;\n }\n if (!isObject.check(methods)) {\n // An empty visitor?\n return new PathVisitor;\n }\n var Visitor = function Visitor() {\n if (!(this instanceof Visitor)) {\n throw new Error(\"Visitor constructor cannot be invoked without 'new'\");\n }\n PathVisitor.call(this);\n };\n var Vp = Visitor.prototype = Object.create(PVp);\n Vp.constructor = Visitor;\n extend(Vp, methods);\n extend(Visitor, PathVisitor);\n isFunction.assert(Visitor.fromMethodsObject);\n isFunction.assert(Visitor.visit);\n return new Visitor;\n };\n function extend(target, source) {\n for (var property in source) {\n if (hasOwn.call(source, property)) {\n target[property] = source[property];\n }\n }\n return target;\n }\n PathVisitor.visit = function visit(node, methods) {\n return PathVisitor.fromMethodsObject(methods).visit(node);\n };\n var PVp = PathVisitor.prototype;\n PVp.visit = function () {\n if (this._visiting) {\n throw new Error(\"Recursively calling visitor.visit(path) resets visitor state. \" +\n \"Try this.visit(path) or this.traverse(path) instead.\");\n }\n // Private state that needs to be reset before every traversal.\n this._visiting = true;\n this._changeReported = false;\n this._abortRequested = false;\n var argc = arguments.length;\n var args = new Array(argc);\n for (var i = 0; i < argc; ++i) {\n args[i] = arguments[i];\n }\n if (!(args[0] instanceof NodePath)) {\n args[0] = new NodePath({ root: args[0] }).get(\"root\");\n }\n // Called with the same arguments as .visit.\n this.reset.apply(this, args);\n var didNotThrow;\n try {\n var root = this.visitWithoutReset(args[0]);\n didNotThrow = true;\n }\n finally {\n this._visiting = false;\n if (!didNotThrow && this._abortRequested) {\n // If this.visitWithoutReset threw an exception and\n // this._abortRequested was set to true, return the root of\n // the AST instead of letting the exception propagate, so that\n // client code does not have to provide a try-catch block to\n // intercept the AbortRequest exception. Other kinds of\n // exceptions will propagate without being intercepted and\n // rethrown by a catch block, so their stacks will accurately\n // reflect the original throwing context.\n return args[0].value;\n }\n }\n return root;\n };\n PVp.AbortRequest = function AbortRequest() { };\n PVp.abort = function () {\n var visitor = this;\n visitor._abortRequested = true;\n var request = new visitor.AbortRequest();\n // If you decide to catch this exception and stop it from propagating,\n // make sure to call its cancel method to avoid silencing other\n // exceptions that might be thrown later in the traversal.\n request.cancel = function () {\n visitor._abortRequested = false;\n };\n throw request;\n };\n PVp.reset = function (_path /*, additional arguments */) {\n // Empty stub; may be reassigned or overridden by subclasses.\n };\n PVp.visitWithoutReset = function (path) {\n if (this instanceof this.Context) {\n // Since this.Context.prototype === this, there's a chance we\n // might accidentally call context.visitWithoutReset. If that\n // happens, re-invoke the method against context.visitor.\n return this.visitor.visitWithoutReset(path);\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n var value = path.value;\n var methodName = value &&\n typeof value === \"object\" &&\n typeof value.type === \"string\" &&\n this._methodNameTable[value.type];\n if (methodName) {\n var context = this.acquireContext(path);\n try {\n return context.invokeVisitorMethod(methodName);\n }\n finally {\n this.releaseContext(context);\n }\n }\n else {\n // If there was no visitor method to call, visit the children of\n // this node generically.\n return visitChildren(path, this);\n }\n };\n function visitChildren(path, visitor) {\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n var value = path.value;\n if (isArray.check(value)) {\n path.each(visitor.visitWithoutReset, visitor);\n }\n else if (!isObject.check(value)) {\n // No children to visit.\n }\n else {\n var childNames = types.getFieldNames(value);\n // The .comments field of the Node type is hidden, so we only\n // visit it if the visitor defines visitBlock or visitLine, and\n // value.comments is defined.\n if (visitor._shouldVisitComments &&\n value.comments &&\n childNames.indexOf(\"comments\") < 0) {\n childNames.push(\"comments\");\n }\n var childCount = childNames.length;\n var childPaths = [];\n for (var i = 0; i < childCount; ++i) {\n var childName = childNames[i];\n if (!hasOwn.call(value, childName)) {\n value[childName] = types.getFieldValue(value, childName);\n }\n childPaths.push(path.get(childName));\n }\n for (var i = 0; i < childCount; ++i) {\n visitor.visitWithoutReset(childPaths[i]);\n }\n }\n return path.value;\n }\n PVp.acquireContext = function (path) {\n if (this._reusableContextStack.length === 0) {\n return new this.Context(path);\n }\n return this._reusableContextStack.pop().reset(path);\n };\n PVp.releaseContext = function (context) {\n if (!(context instanceof this.Context)) {\n throw new Error(\"\");\n }\n this._reusableContextStack.push(context);\n context.currentPath = null;\n };\n PVp.reportChanged = function () {\n this._changeReported = true;\n };\n PVp.wasChangeReported = function () {\n return this._changeReported;\n };\n function makeContextConstructor(visitor) {\n function Context(path) {\n if (!(this instanceof Context)) {\n throw new Error(\"\");\n }\n if (!(this instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n Object.defineProperty(this, \"visitor\", {\n value: visitor,\n writable: false,\n enumerable: true,\n configurable: false\n });\n this.currentPath = path;\n this.needToCallTraverse = true;\n Object.seal(this);\n }\n if (!(visitor instanceof PathVisitor)) {\n throw new Error(\"\");\n }\n // Note that the visitor object is the prototype of Context.prototype,\n // so all visitor methods are inherited by context objects.\n var Cp = Context.prototype = Object.create(visitor);\n Cp.constructor = Context;\n extend(Cp, sharedContextProtoMethods);\n return Context;\n }\n // Every PathVisitor has a different this.Context constructor and\n // this.Context.prototype object, but those prototypes can all use the\n // same reset, invokeVisitorMethod, and traverse function objects.\n var sharedContextProtoMethods = Object.create(null);\n sharedContextProtoMethods.reset =\n function reset(path) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.currentPath = path;\n this.needToCallTraverse = true;\n return this;\n };\n sharedContextProtoMethods.invokeVisitorMethod =\n function invokeVisitorMethod(methodName) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n var result = this.visitor[methodName].call(this, this.currentPath);\n if (result === false) {\n // Visitor methods return false to indicate that they have handled\n // their own traversal needs, and we should not complain if\n // this.needToCallTraverse is still true.\n this.needToCallTraverse = false;\n }\n else if (result !== undefined) {\n // Any other non-undefined value returned from the visitor method\n // is interpreted as a replacement value.\n this.currentPath = this.currentPath.replace(result)[0];\n if (this.needToCallTraverse) {\n // If this.traverse still hasn't been called, visit the\n // children of the replacement node.\n this.traverse(this.currentPath);\n }\n }\n if (this.needToCallTraverse !== false) {\n throw new Error(\"Must either call this.traverse or return false in \" + methodName);\n }\n var path = this.currentPath;\n return path && path.value;\n };\n sharedContextProtoMethods.traverse =\n function traverse(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.needToCallTraverse = false;\n return visitChildren(path, PathVisitor.fromMethodsObject(newVisitor || this.visitor));\n };\n sharedContextProtoMethods.visit =\n function visit(path, newVisitor) {\n if (!(this instanceof this.Context)) {\n throw new Error(\"\");\n }\n if (!(path instanceof NodePath)) {\n throw new Error(\"\");\n }\n if (!(this.currentPath instanceof NodePath)) {\n throw new Error(\"\");\n }\n this.needToCallTraverse = false;\n return PathVisitor.fromMethodsObject(newVisitor || this.visitor).visitWithoutReset(path);\n };\n sharedContextProtoMethods.reportChanged = function reportChanged() {\n this.visitor.reportChanged();\n };\n sharedContextProtoMethods.abort = function abort() {\n this.needToCallTraverse = false;\n this.visitor.abort();\n };\n return PathVisitor;\n}\nexports.default = pathVisitorPlugin;\nmodule.exports = exports[\"default\"];\n",
21
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var getFieldNames = types.getFieldNames;\n var getFieldValue = types.getFieldValue;\n var isArray = types.builtInTypes.array;\n var isObject = types.builtInTypes.object;\n var isDate = types.builtInTypes.Date;\n var isRegExp = types.builtInTypes.RegExp;\n var hasOwn = Object.prototype.hasOwnProperty;\n function astNodesAreEquivalent(a, b, problemPath) {\n if (isArray.check(problemPath)) {\n problemPath.length = 0;\n }\n else {\n problemPath = null;\n }\n return areEquivalent(a, b, problemPath);\n }\n astNodesAreEquivalent.assert = function (a, b) {\n var problemPath = [];\n if (!astNodesAreEquivalent(a, b, problemPath)) {\n if (problemPath.length === 0) {\n if (a !== b) {\n throw new Error(\"Nodes must be equal\");\n }\n }\n else {\n throw new Error(\"Nodes differ in the following path: \" +\n problemPath.map(subscriptForProperty).join(\"\"));\n }\n }\n };\n function subscriptForProperty(property) {\n if (/[_$a-z][_$a-z0-9]*/i.test(property)) {\n return \".\" + property;\n }\n return \"[\" + JSON.stringify(property) + \"]\";\n }\n function areEquivalent(a, b, problemPath) {\n if (a === b) {\n return true;\n }\n if (isArray.check(a)) {\n return arraysAreEquivalent(a, b, problemPath);\n }\n if (isObject.check(a)) {\n return objectsAreEquivalent(a, b, problemPath);\n }\n if (isDate.check(a)) {\n return isDate.check(b) && (+a === +b);\n }\n if (isRegExp.check(a)) {\n return isRegExp.check(b) && (a.source === b.source &&\n a.global === b.global &&\n a.multiline === b.multiline &&\n a.ignoreCase === b.ignoreCase);\n }\n return a == b;\n }\n function arraysAreEquivalent(a, b, problemPath) {\n isArray.assert(a);\n var aLength = a.length;\n if (!isArray.check(b) || b.length !== aLength) {\n if (problemPath) {\n problemPath.push(\"length\");\n }\n return false;\n }\n for (var i = 0; i < aLength; ++i) {\n if (problemPath) {\n problemPath.push(i);\n }\n if (i in a !== i in b) {\n return false;\n }\n if (!areEquivalent(a[i], b[i], problemPath)) {\n return false;\n }\n if (problemPath) {\n var problemPathTail = problemPath.pop();\n if (problemPathTail !== i) {\n throw new Error(\"\" + problemPathTail);\n }\n }\n }\n return true;\n }\n function objectsAreEquivalent(a, b, problemPath) {\n isObject.assert(a);\n if (!isObject.check(b)) {\n return false;\n }\n // Fast path for a common property of AST nodes.\n if (a.type !== b.type) {\n if (problemPath) {\n problemPath.push(\"type\");\n }\n return false;\n }\n var aNames = getFieldNames(a);\n var aNameCount = aNames.length;\n var bNames = getFieldNames(b);\n var bNameCount = bNames.length;\n if (aNameCount === bNameCount) {\n for (var i = 0; i < aNameCount; ++i) {\n var name = aNames[i];\n var aChild = getFieldValue(a, name);\n var bChild = getFieldValue(b, name);\n if (problemPath) {\n problemPath.push(name);\n }\n if (!areEquivalent(aChild, bChild, problemPath)) {\n return false;\n }\n if (problemPath) {\n var problemPathTail = problemPath.pop();\n if (problemPathTail !== name) {\n throw new Error(\"\" + problemPathTail);\n }\n }\n }\n return true;\n }\n if (!problemPath) {\n return false;\n }\n // Since aNameCount !== bNameCount, we need to find some name that's\n // missing in aNames but present in bNames, or vice-versa.\n var seenNames = Object.create(null);\n for (i = 0; i < aNameCount; ++i) {\n seenNames[aNames[i]] = true;\n }\n for (i = 0; i < bNameCount; ++i) {\n name = bNames[i];\n if (!hasOwn.call(seenNames, name)) {\n problemPath.push(name);\n return false;\n }\n delete seenNames[name];\n }\n for (name in seenNames) {\n problemPath.push(name);\n break;\n }\n return false;\n }\n return astNodesAreEquivalent;\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
22
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./lib/types\"));\nvar path_visitor_1 = tslib_1.__importDefault(require(\"./lib/path-visitor\"));\nvar equiv_1 = tslib_1.__importDefault(require(\"./lib/equiv\"));\nvar path_1 = tslib_1.__importDefault(require(\"./lib/path\"));\nvar node_path_1 = tslib_1.__importDefault(require(\"./lib/node-path\"));\nfunction default_1(defs) {\n var fork = createFork();\n var types = fork.use(types_1.default);\n defs.forEach(fork.use);\n types.finalize();\n var PathVisitor = fork.use(path_visitor_1.default);\n return {\n Type: types.Type,\n builtInTypes: types.builtInTypes,\n namedTypes: types.namedTypes,\n builders: types.builders,\n defineMethod: types.defineMethod,\n getFieldNames: types.getFieldNames,\n getFieldValue: types.getFieldValue,\n eachField: types.eachField,\n someField: types.someField,\n getSupertypeNames: types.getSupertypeNames,\n getBuilderName: types.getBuilderName,\n astNodesAreEquivalent: fork.use(equiv_1.default),\n finalize: types.finalize,\n Path: fork.use(path_1.default),\n NodePath: fork.use(node_path_1.default),\n PathVisitor: PathVisitor,\n use: fork.use,\n visit: PathVisitor.visit,\n };\n}\nexports.default = default_1;\nfunction createFork() {\n var used = [];\n var usedResult = [];\n function use(plugin) {\n var idx = used.indexOf(plugin);\n if (idx === -1) {\n idx = used.length;\n used.push(plugin);\n usedResult[idx] = plugin(fork);\n }\n return usedResult[idx];\n }\n var fork = { use: use };\n return fork;\n}\nmodule.exports = exports[\"default\"];\n",
23
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogicalOperators = exports.AssignmentOperators = exports.BinaryOperators = void 0;\nexports.BinaryOperators = [\n \"==\", \"!=\", \"===\", \"!==\",\n \"<\", \"<=\", \">\", \">=\",\n \"<<\", \">>\", \">>>\",\n \"+\", \"-\", \"*\", \"/\", \"%\",\n \"&\",\n \"|\", \"^\", \"in\",\n \"instanceof\",\n];\nexports.AssignmentOperators = [\n \"=\", \"+=\", \"-=\", \"*=\", \"/=\", \"%=\",\n \"<<=\", \">>=\", \">>>=\",\n \"|=\", \"^=\", \"&=\",\n];\nexports.LogicalOperators = [\n \"||\", \"&&\",\n];\n",
24
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"./types\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var builtin = types.builtInTypes;\n var isNumber = builtin.number;\n // An example of constructing a new type with arbitrary constraints from\n // an existing type.\n function geq(than) {\n return Type.from(function (value) { return isNumber.check(value) && value >= than; }, isNumber + \" >= \" + than);\n }\n ;\n // Default value-returning functions that may optionally be passed as a\n // third argument to Def.prototype.field.\n var defaults = {\n // Functions were used because (among other reasons) that's the most\n // elegant way to allow for the emptyArray one always to give a new\n // array instance.\n \"null\": function () { return null; },\n \"emptyArray\": function () { return []; },\n \"false\": function () { return false; },\n \"true\": function () { return true; },\n \"undefined\": function () { },\n \"use strict\": function () { return \"use strict\"; }\n };\n var naiveIsPrimitive = Type.or(builtin.string, builtin.number, builtin.boolean, builtin.null, builtin.undefined);\n var isPrimitive = Type.from(function (value) {\n if (value === null)\n return true;\n var type = typeof value;\n if (type === \"object\" ||\n type === \"function\") {\n return false;\n }\n return true;\n }, naiveIsPrimitive.toString());\n return {\n geq: geq,\n defaults: defaults,\n isPrimitive: isPrimitive,\n };\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
25
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar core_operators_1 = require(\"./core-operators\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var def = Type.def;\n var or = Type.or;\n var shared = fork.use(shared_1.default);\n var defaults = shared.defaults;\n var geq = shared.geq;\n // Abstract supertype of all syntactic entities that are allowed to have a\n // .loc field.\n def(\"Printable\")\n .field(\"loc\", or(def(\"SourceLocation\"), null), defaults[\"null\"], true);\n def(\"Node\")\n .bases(\"Printable\")\n .field(\"type\", String)\n .field(\"comments\", or([def(\"Comment\")], null), defaults[\"null\"], true);\n def(\"SourceLocation\")\n .field(\"start\", def(\"Position\"))\n .field(\"end\", def(\"Position\"))\n .field(\"source\", or(String, null), defaults[\"null\"]);\n def(\"Position\")\n .field(\"line\", geq(1))\n .field(\"column\", geq(0));\n def(\"File\")\n .bases(\"Node\")\n .build(\"program\", \"name\")\n .field(\"program\", def(\"Program\"))\n .field(\"name\", or(String, null), defaults[\"null\"]);\n def(\"Program\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"Function\")\n .bases(\"Node\")\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"params\", [def(\"Pattern\")])\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"]);\n def(\"Statement\").bases(\"Node\");\n // The empty .build() here means that an EmptyStatement can be constructed\n // (i.e. it's not abstract) but that it needs no arguments.\n def(\"EmptyStatement\").bases(\"Statement\").build();\n def(\"BlockStatement\")\n .bases(\"Statement\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n // TODO Figure out how to silently coerce Expressions to\n // ExpressionStatements where a Statement was expected.\n def(\"ExpressionStatement\")\n .bases(\"Statement\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"IfStatement\")\n .bases(\"Statement\")\n .build(\"test\", \"consequent\", \"alternate\")\n .field(\"test\", def(\"Expression\"))\n .field(\"consequent\", def(\"Statement\"))\n .field(\"alternate\", or(def(\"Statement\"), null), defaults[\"null\"]);\n def(\"LabeledStatement\")\n .bases(\"Statement\")\n .build(\"label\", \"body\")\n .field(\"label\", def(\"Identifier\"))\n .field(\"body\", def(\"Statement\"));\n def(\"BreakStatement\")\n .bases(\"Statement\")\n .build(\"label\")\n .field(\"label\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n def(\"ContinueStatement\")\n .bases(\"Statement\")\n .build(\"label\")\n .field(\"label\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n def(\"WithStatement\")\n .bases(\"Statement\")\n .build(\"object\", \"body\")\n .field(\"object\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"SwitchStatement\")\n .bases(\"Statement\")\n .build(\"discriminant\", \"cases\", \"lexical\")\n .field(\"discriminant\", def(\"Expression\"))\n .field(\"cases\", [def(\"SwitchCase\")])\n .field(\"lexical\", Boolean, defaults[\"false\"]);\n def(\"ReturnStatement\")\n .bases(\"Statement\")\n .build(\"argument\")\n .field(\"argument\", or(def(\"Expression\"), null));\n def(\"ThrowStatement\")\n .bases(\"Statement\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"TryStatement\")\n .bases(\"Statement\")\n .build(\"block\", \"handler\", \"finalizer\")\n .field(\"block\", def(\"BlockStatement\"))\n .field(\"handler\", or(def(\"CatchClause\"), null), function () {\n return this.handlers && this.handlers[0] || null;\n })\n .field(\"handlers\", [def(\"CatchClause\")], function () {\n return this.handler ? [this.handler] : [];\n }, true) // Indicates this field is hidden from eachField iteration.\n .field(\"guardedHandlers\", [def(\"CatchClause\")], defaults.emptyArray)\n .field(\"finalizer\", or(def(\"BlockStatement\"), null), defaults[\"null\"]);\n def(\"CatchClause\")\n .bases(\"Node\")\n .build(\"param\", \"guard\", \"body\")\n .field(\"param\", def(\"Pattern\"))\n .field(\"guard\", or(def(\"Expression\"), null), defaults[\"null\"])\n .field(\"body\", def(\"BlockStatement\"));\n def(\"WhileStatement\")\n .bases(\"Statement\")\n .build(\"test\", \"body\")\n .field(\"test\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"DoWhileStatement\")\n .bases(\"Statement\")\n .build(\"body\", \"test\")\n .field(\"body\", def(\"Statement\"))\n .field(\"test\", def(\"Expression\"));\n def(\"ForStatement\")\n .bases(\"Statement\")\n .build(\"init\", \"test\", \"update\", \"body\")\n .field(\"init\", or(def(\"VariableDeclaration\"), def(\"Expression\"), null))\n .field(\"test\", or(def(\"Expression\"), null))\n .field(\"update\", or(def(\"Expression\"), null))\n .field(\"body\", def(\"Statement\"));\n def(\"ForInStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Expression\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"DebuggerStatement\").bases(\"Statement\").build();\n def(\"Declaration\").bases(\"Statement\");\n def(\"FunctionDeclaration\")\n .bases(\"Function\", \"Declaration\")\n .build(\"id\", \"params\", \"body\")\n .field(\"id\", def(\"Identifier\"));\n def(\"FunctionExpression\")\n .bases(\"Function\", \"Expression\")\n .build(\"id\", \"params\", \"body\");\n def(\"VariableDeclaration\")\n .bases(\"Declaration\")\n .build(\"kind\", \"declarations\")\n .field(\"kind\", or(\"var\", \"let\", \"const\"))\n .field(\"declarations\", [def(\"VariableDeclarator\")]);\n def(\"VariableDeclarator\")\n .bases(\"Node\")\n .build(\"id\", \"init\")\n .field(\"id\", def(\"Pattern\"))\n .field(\"init\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"Expression\").bases(\"Node\");\n def(\"ThisExpression\").bases(\"Expression\").build();\n def(\"ArrayExpression\")\n .bases(\"Expression\")\n .build(\"elements\")\n .field(\"elements\", [or(def(\"Expression\"), null)]);\n def(\"ObjectExpression\")\n .bases(\"Expression\")\n .build(\"properties\")\n .field(\"properties\", [def(\"Property\")]);\n // TODO Not in the Mozilla Parser API, but used by Esprima.\n def(\"Property\")\n .bases(\"Node\") // Want to be able to visit Property Nodes.\n .build(\"kind\", \"key\", \"value\")\n .field(\"kind\", or(\"init\", \"get\", \"set\"))\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\")))\n .field(\"value\", def(\"Expression\"));\n def(\"SequenceExpression\")\n .bases(\"Expression\")\n .build(\"expressions\")\n .field(\"expressions\", [def(\"Expression\")]);\n var UnaryOperator = or(\"-\", \"+\", \"!\", \"~\", \"typeof\", \"void\", \"delete\");\n def(\"UnaryExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"argument\", \"prefix\")\n .field(\"operator\", UnaryOperator)\n .field(\"argument\", def(\"Expression\"))\n // Esprima doesn't bother with this field, presumably because it's\n // always true for unary operators.\n .field(\"prefix\", Boolean, defaults[\"true\"]);\n var BinaryOperator = or.apply(void 0, core_operators_1.BinaryOperators);\n def(\"BinaryExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", BinaryOperator)\n .field(\"left\", def(\"Expression\"))\n .field(\"right\", def(\"Expression\"));\n var AssignmentOperator = or.apply(void 0, core_operators_1.AssignmentOperators);\n def(\"AssignmentExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", AssignmentOperator)\n .field(\"left\", or(def(\"Pattern\"), def(\"MemberExpression\")))\n .field(\"right\", def(\"Expression\"));\n var UpdateOperator = or(\"++\", \"--\");\n def(\"UpdateExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"argument\", \"prefix\")\n .field(\"operator\", UpdateOperator)\n .field(\"argument\", def(\"Expression\"))\n .field(\"prefix\", Boolean);\n var LogicalOperator = or.apply(void 0, core_operators_1.LogicalOperators);\n def(\"LogicalExpression\")\n .bases(\"Expression\")\n .build(\"operator\", \"left\", \"right\")\n .field(\"operator\", LogicalOperator)\n .field(\"left\", def(\"Expression\"))\n .field(\"right\", def(\"Expression\"));\n def(\"ConditionalExpression\")\n .bases(\"Expression\")\n .build(\"test\", \"consequent\", \"alternate\")\n .field(\"test\", def(\"Expression\"))\n .field(\"consequent\", def(\"Expression\"))\n .field(\"alternate\", def(\"Expression\"));\n def(\"NewExpression\")\n .bases(\"Expression\")\n .build(\"callee\", \"arguments\")\n .field(\"callee\", def(\"Expression\"))\n // The Mozilla Parser API gives this type as [or(def(\"Expression\"),\n // null)], but null values don't really make sense at the call site.\n // TODO Report this nonsense.\n .field(\"arguments\", [def(\"Expression\")]);\n def(\"CallExpression\")\n .bases(\"Expression\")\n .build(\"callee\", \"arguments\")\n .field(\"callee\", def(\"Expression\"))\n // See comment for NewExpression above.\n .field(\"arguments\", [def(\"Expression\")]);\n def(\"MemberExpression\")\n .bases(\"Expression\")\n .build(\"object\", \"property\", \"computed\")\n .field(\"object\", def(\"Expression\"))\n .field(\"property\", or(def(\"Identifier\"), def(\"Expression\")))\n .field(\"computed\", Boolean, function () {\n var type = this.property.type;\n if (type === 'Literal' ||\n type === 'MemberExpression' ||\n type === 'BinaryExpression') {\n return true;\n }\n return false;\n });\n def(\"Pattern\").bases(\"Node\");\n def(\"SwitchCase\")\n .bases(\"Node\")\n .build(\"test\", \"consequent\")\n .field(\"test\", or(def(\"Expression\"), null))\n .field(\"consequent\", [def(\"Statement\")]);\n def(\"Identifier\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"name\")\n .field(\"name\", String)\n .field(\"optional\", Boolean, defaults[\"false\"]);\n def(\"Literal\")\n .bases(\"Expression\")\n .build(\"value\")\n .field(\"value\", or(String, Boolean, null, Number, RegExp))\n .field(\"regex\", or({\n pattern: String,\n flags: String\n }, null), function () {\n if (this.value instanceof RegExp) {\n var flags = \"\";\n if (this.value.ignoreCase)\n flags += \"i\";\n if (this.value.multiline)\n flags += \"m\";\n if (this.value.global)\n flags += \"g\";\n return {\n pattern: this.value.source,\n flags: flags\n };\n }\n return null;\n });\n // Abstract (non-buildable) comment supertype. Not a Node.\n def(\"Comment\")\n .bases(\"Printable\")\n .field(\"value\", String)\n // A .leading comment comes before the node, whereas a .trailing\n // comment comes after it. These two fields should not both be true,\n // but they might both be false when the comment falls inside a node\n // and the node has no children for the comment to lead or trail,\n // e.g. { /*dangling*/ }.\n .field(\"leading\", Boolean, defaults[\"true\"])\n .field(\"trailing\", Boolean, defaults[\"false\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
26
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar core_1 = tslib_1.__importDefault(require(\"./core\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(core_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"Function\")\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"expression\", Boolean, defaults[\"false\"])\n .field(\"defaults\", [or(def(\"Expression\"), null)], defaults.emptyArray)\n // Legacy\n .field(\"rest\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n // The ESTree way of representing a ...rest parameter.\n def(\"RestElement\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"))\n .field(\"typeAnnotation\", // for Babylon. Flow parser puts it on the identifier\n or(def(\"TypeAnnotation\"), def(\"TSTypeAnnotation\"), null), defaults[\"null\"]);\n def(\"SpreadElementPattern\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"));\n def(\"FunctionDeclaration\")\n .build(\"id\", \"params\", \"body\", \"generator\", \"expression\")\n // May be `null` in the context of `export default function () {}`\n .field(\"id\", or(def(\"Identifier\"), null));\n def(\"FunctionExpression\")\n .build(\"id\", \"params\", \"body\", \"generator\", \"expression\");\n def(\"ArrowFunctionExpression\")\n .bases(\"Function\", \"Expression\")\n .build(\"params\", \"body\", \"expression\")\n // The forced null value here is compatible with the overridden\n // definition of the \"id\" field in the Function interface.\n .field(\"id\", null, defaults[\"null\"])\n // Arrow function bodies are allowed to be expressions.\n .field(\"body\", or(def(\"BlockStatement\"), def(\"Expression\")))\n // The current spec forbids arrow generators, so I have taken the\n // liberty of enforcing that. TODO Report this.\n .field(\"generator\", false, defaults[\"false\"]);\n def(\"ForOfStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Pattern\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n def(\"YieldExpression\")\n .bases(\"Expression\")\n .build(\"argument\", \"delegate\")\n .field(\"argument\", or(def(\"Expression\"), null))\n .field(\"delegate\", Boolean, defaults[\"false\"]);\n def(\"GeneratorExpression\")\n .bases(\"Expression\")\n .build(\"body\", \"blocks\", \"filter\")\n .field(\"body\", def(\"Expression\"))\n .field(\"blocks\", [def(\"ComprehensionBlock\")])\n .field(\"filter\", or(def(\"Expression\"), null));\n def(\"ComprehensionExpression\")\n .bases(\"Expression\")\n .build(\"body\", \"blocks\", \"filter\")\n .field(\"body\", def(\"Expression\"))\n .field(\"blocks\", [def(\"ComprehensionBlock\")])\n .field(\"filter\", or(def(\"Expression\"), null));\n def(\"ComprehensionBlock\")\n .bases(\"Node\")\n .build(\"left\", \"right\", \"each\")\n .field(\"left\", def(\"Pattern\"))\n .field(\"right\", def(\"Expression\"))\n .field(\"each\", Boolean);\n def(\"Property\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\")))\n .field(\"method\", Boolean, defaults[\"false\"])\n .field(\"shorthand\", Boolean, defaults[\"false\"])\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ObjectProperty\")\n .field(\"shorthand\", Boolean, defaults[\"false\"]);\n def(\"PropertyPattern\")\n .bases(\"Pattern\")\n .build(\"key\", \"pattern\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"pattern\", def(\"Pattern\"))\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ObjectPattern\")\n .bases(\"Pattern\")\n .build(\"properties\")\n .field(\"properties\", [or(def(\"PropertyPattern\"), def(\"Property\"))]);\n def(\"ArrayPattern\")\n .bases(\"Pattern\")\n .build(\"elements\")\n .field(\"elements\", [or(def(\"Pattern\"), null)]);\n def(\"SpreadElement\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ArrayExpression\")\n .field(\"elements\", [or(def(\"Expression\"), def(\"SpreadElement\"), def(\"RestElement\"), null)]);\n def(\"NewExpression\")\n .field(\"arguments\", [or(def(\"Expression\"), def(\"SpreadElement\"))]);\n def(\"CallExpression\")\n .field(\"arguments\", [or(def(\"Expression\"), def(\"SpreadElement\"))]);\n // Note: this node type is *not* an AssignmentExpression with a Pattern on\n // the left-hand side! The existing AssignmentExpression type already\n // supports destructuring assignments. AssignmentPattern nodes may appear\n // wherever a Pattern is allowed, and the right-hand side represents a\n // default value to be destructured against the left-hand side, if no\n // value is otherwise provided. For example: default parameter values.\n def(\"AssignmentPattern\")\n .bases(\"Pattern\")\n .build(\"left\", \"right\")\n .field(\"left\", def(\"Pattern\"))\n .field(\"right\", def(\"Expression\"));\n def(\"MethodDefinition\")\n .bases(\"Declaration\")\n .build(\"kind\", \"key\", \"value\", \"static\")\n .field(\"kind\", or(\"constructor\", \"method\", \"get\", \"set\"))\n .field(\"key\", def(\"Expression\"))\n .field(\"value\", def(\"Function\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"static\", Boolean, defaults[\"false\"]);\n var ClassBodyElement = or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"));\n def(\"ClassProperty\")\n .bases(\"Declaration\")\n .build(\"key\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"computed\", Boolean, defaults[\"false\"]);\n def(\"ClassPropertyDefinition\") // static property\n .bases(\"Declaration\")\n .build(\"definition\")\n // Yes, Virginia, circular definitions are permitted.\n .field(\"definition\", ClassBodyElement);\n def(\"ClassBody\")\n .bases(\"Declaration\")\n .build(\"body\")\n .field(\"body\", [ClassBodyElement]);\n def(\"ClassDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\", \"superClass\")\n .field(\"id\", or(def(\"Identifier\"), null))\n .field(\"body\", def(\"ClassBody\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"ClassExpression\")\n .bases(\"Expression\")\n .build(\"id\", \"body\", \"superClass\")\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"body\", def(\"ClassBody\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"Super\")\n .bases(\"Expression\")\n .build();\n // Specifier and ModuleSpecifier are abstract non-standard types\n // introduced for definitional convenience.\n def(\"Specifier\").bases(\"Node\");\n // This supertype is shared/abused by both def/babel.js and\n // def/esprima.js. In the future, it will be possible to load only one set\n // of definitions appropriate for a given parser, but until then we must\n // rely on default functions to reconcile the conflicting AST formats.\n def(\"ModuleSpecifier\")\n .bases(\"Specifier\")\n // This local field is used by Babel/Acorn. It should not technically\n // be optional in the Babel/Acorn AST format, but it must be optional\n // in the Esprima AST format.\n .field(\"local\", or(def(\"Identifier\"), null), defaults[\"null\"])\n // The id and name fields are used by Esprima. The id field should not\n // technically be optional in the Esprima AST format, but it must be\n // optional in the Babel/Acorn AST format.\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"name\", or(def(\"Identifier\"), null), defaults[\"null\"]);\n // import {<id [as name]>} from ...;\n def(\"ImportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"imported\", \"local\")\n .field(\"imported\", def(\"Identifier\"));\n // import <id> from ...;\n def(\"ImportDefaultSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\");\n // import <* as id> from ...;\n def(\"ImportNamespaceSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\");\n def(\"ImportDeclaration\")\n .bases(\"Declaration\")\n .build(\"specifiers\", \"source\", \"importKind\")\n .field(\"specifiers\", [or(def(\"ImportSpecifier\"), def(\"ImportNamespaceSpecifier\"), def(\"ImportDefaultSpecifier\"))], defaults.emptyArray)\n .field(\"source\", def(\"Literal\"))\n .field(\"importKind\", or(\"value\", \"type\"), function () {\n return \"value\";\n });\n def(\"ExportNamedDeclaration\")\n .bases(\"Declaration\")\n .build(\"declaration\", \"specifiers\", \"source\")\n .field(\"declaration\", or(def(\"Declaration\"), null))\n .field(\"specifiers\", [def(\"ExportSpecifier\")], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"ExportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"local\", \"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"ExportDefaultDeclaration\")\n .bases(\"Declaration\")\n .build(\"declaration\")\n .field(\"declaration\", or(def(\"Declaration\"), def(\"Expression\")));\n def(\"ExportAllDeclaration\")\n .bases(\"Declaration\")\n .build(\"source\")\n .field(\"source\", def(\"Literal\"));\n def(\"TaggedTemplateExpression\")\n .bases(\"Expression\")\n .build(\"tag\", \"quasi\")\n .field(\"tag\", def(\"Expression\"))\n .field(\"quasi\", def(\"TemplateLiteral\"));\n def(\"TemplateLiteral\")\n .bases(\"Expression\")\n .build(\"quasis\", \"expressions\")\n .field(\"quasis\", [def(\"TemplateElement\")])\n .field(\"expressions\", [def(\"Expression\")]);\n def(\"TemplateElement\")\n .bases(\"Node\")\n .build(\"value\", \"tail\")\n .field(\"value\", { \"cooked\": String, \"raw\": String })\n .field(\"tail\", Boolean);\n def(\"MetaProperty\")\n .bases(\"Expression\")\n .build(\"meta\", \"property\")\n .field(\"meta\", def(\"Identifier\"))\n .field(\"property\", def(\"Identifier\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
27
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar core_operators_1 = require(\"./core-operators\");\nvar es6_1 = tslib_1.__importDefault(require(\"./es6\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nfunction default_1(fork) {\n fork.use(es6_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var BinaryOperator = or.apply(void 0, tslib_1.__spreadArrays(core_operators_1.BinaryOperators, [\"**\"]));\n def(\"BinaryExpression\")\n .field(\"operator\", BinaryOperator);\n var AssignmentOperator = or.apply(void 0, tslib_1.__spreadArrays(core_operators_1.AssignmentOperators, [\"**=\"]));\n def(\"AssignmentExpression\")\n .field(\"operator\", AssignmentOperator);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
28
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es2016_1 = tslib_1.__importDefault(require(\"./es2016\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2016_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"Function\")\n .field(\"async\", Boolean, defaults[\"false\"]);\n def(\"AwaitExpression\")\n .bases(\"Expression\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
29
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es2017_1 = tslib_1.__importDefault(require(\"./es2017\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2017_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"ForOfStatement\")\n .field(\"await\", Boolean, defaults[\"false\"]);\n // Legacy\n def(\"SpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ObjectExpression\")\n .field(\"properties\", [or(def(\"Property\"), def(\"SpreadProperty\"), // Legacy\n def(\"SpreadElement\"))]);\n def(\"TemplateElement\")\n .field(\"value\", { \"cooked\": or(String, null), \"raw\": String });\n // Legacy\n def(\"SpreadPropertyPattern\")\n .bases(\"Pattern\")\n .build(\"argument\")\n .field(\"argument\", def(\"Pattern\"));\n def(\"ObjectPattern\")\n .field(\"properties\", [or(def(\"PropertyPattern\"), def(\"Property\"), def(\"RestElement\"), def(\"SpreadPropertyPattern\"))]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
30
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es2018_1 = tslib_1.__importDefault(require(\"./es2018\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2018_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"CatchClause\")\n .field(\"param\", or(def(\"Pattern\"), null), defaults[\"null\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
31
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar core_operators_1 = require(\"./core-operators\");\nvar es2019_1 = tslib_1.__importDefault(require(\"./es2019\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2019_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var shared = fork.use(shared_1.default);\n var defaults = shared.defaults;\n def(\"ImportExpression\")\n .bases(\"Expression\")\n .build(\"source\")\n .field(\"source\", def(\"Expression\"));\n def(\"ExportAllDeclaration\")\n .build(\"source\", \"exported\")\n .field(\"source\", def(\"Literal\"))\n .field(\"exported\", or(def(\"Identifier\"), null));\n // Optional chaining\n def(\"ChainElement\")\n .bases(\"Node\")\n .field(\"optional\", Boolean, defaults[\"false\"]);\n def(\"CallExpression\")\n .bases(\"Expression\", \"ChainElement\");\n def(\"MemberExpression\")\n .bases(\"Expression\", \"ChainElement\");\n def(\"ChainExpression\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", def(\"ChainElement\"));\n def(\"OptionalCallExpression\")\n .bases(\"CallExpression\")\n .build(\"callee\", \"arguments\", \"optional\")\n .field(\"optional\", Boolean, defaults[\"true\"]);\n // Deprecated optional chaining type, doesn't work with babelParser@7.11.0 or newer\n def(\"OptionalMemberExpression\")\n .bases(\"MemberExpression\")\n .build(\"object\", \"property\", \"computed\", \"optional\")\n .field(\"optional\", Boolean, defaults[\"true\"]);\n // Nullish coalescing\n var LogicalOperator = or.apply(void 0, tslib_1.__spreadArrays(core_operators_1.LogicalOperators, [\"??\"]));\n def(\"LogicalExpression\")\n .field(\"operator\", LogicalOperator);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
32
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es2020_1 = tslib_1.__importDefault(require(\"./es2020\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2020_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n def(\"JSXAttribute\")\n .bases(\"Node\")\n .build(\"name\", \"value\")\n .field(\"name\", or(def(\"JSXIdentifier\"), def(\"JSXNamespacedName\")))\n .field(\"value\", or(def(\"Literal\"), // attr=\"value\"\n def(\"JSXExpressionContainer\"), // attr={value}\n def(\"JSXElement\"), // attr=<div />\n def(\"JSXFragment\"), // attr=<></>\n null // attr= or just attr\n ), defaults[\"null\"]);\n def(\"JSXIdentifier\")\n .bases(\"Identifier\")\n .build(\"name\")\n .field(\"name\", String);\n def(\"JSXNamespacedName\")\n .bases(\"Node\")\n .build(\"namespace\", \"name\")\n .field(\"namespace\", def(\"JSXIdentifier\"))\n .field(\"name\", def(\"JSXIdentifier\"));\n def(\"JSXMemberExpression\")\n .bases(\"MemberExpression\")\n .build(\"object\", \"property\")\n .field(\"object\", or(def(\"JSXIdentifier\"), def(\"JSXMemberExpression\")))\n .field(\"property\", def(\"JSXIdentifier\"))\n .field(\"computed\", Boolean, defaults.false);\n var JSXElementName = or(def(\"JSXIdentifier\"), def(\"JSXNamespacedName\"), def(\"JSXMemberExpression\"));\n def(\"JSXSpreadAttribute\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n var JSXAttributes = [or(def(\"JSXAttribute\"), def(\"JSXSpreadAttribute\"))];\n def(\"JSXExpressionContainer\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", or(def(\"Expression\"), def(\"JSXEmptyExpression\")));\n var JSXChildren = [or(def(\"JSXText\"), def(\"JSXExpressionContainer\"), def(\"JSXSpreadChild\"), def(\"JSXElement\"), def(\"JSXFragment\"), def(\"Literal\") // Legacy: Esprima should return JSXText instead.\n )];\n def(\"JSXElement\")\n .bases(\"Expression\")\n .build(\"openingElement\", \"closingElement\", \"children\")\n .field(\"openingElement\", def(\"JSXOpeningElement\"))\n .field(\"closingElement\", or(def(\"JSXClosingElement\"), null), defaults[\"null\"])\n .field(\"children\", JSXChildren, defaults.emptyArray)\n .field(\"name\", JSXElementName, function () {\n // Little-known fact: the `this` object inside a default function\n // is none other than the partially-built object itself, and any\n // fields initialized directly from builder function arguments\n // (like openingElement, closingElement, and children) are\n // guaranteed to be available.\n return this.openingElement.name;\n }, true) // hidden from traversal\n .field(\"selfClosing\", Boolean, function () {\n return this.openingElement.selfClosing;\n }, true) // hidden from traversal\n .field(\"attributes\", JSXAttributes, function () {\n return this.openingElement.attributes;\n }, true); // hidden from traversal\n def(\"JSXOpeningElement\")\n .bases(\"Node\")\n .build(\"name\", \"attributes\", \"selfClosing\")\n .field(\"name\", JSXElementName)\n .field(\"attributes\", JSXAttributes, defaults.emptyArray)\n .field(\"selfClosing\", Boolean, defaults[\"false\"]);\n def(\"JSXClosingElement\")\n .bases(\"Node\")\n .build(\"name\")\n .field(\"name\", JSXElementName);\n def(\"JSXFragment\")\n .bases(\"Expression\")\n .build(\"openingFragment\", \"closingFragment\", \"children\")\n .field(\"openingFragment\", def(\"JSXOpeningFragment\"))\n .field(\"closingFragment\", def(\"JSXClosingFragment\"))\n .field(\"children\", JSXChildren, defaults.emptyArray);\n def(\"JSXOpeningFragment\")\n .bases(\"Node\")\n .build();\n def(\"JSXClosingFragment\")\n .bases(\"Node\")\n .build();\n def(\"JSXText\")\n .bases(\"Literal\")\n .build(\"value\", \"raw\")\n .field(\"value\", String)\n .field(\"raw\", String, function () {\n return this.value;\n });\n def(\"JSXEmptyExpression\")\n .bases(\"Node\")\n .build();\n def(\"JSXSpreadChild\")\n .bases(\"Node\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
33
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nvar es2020_1 = tslib_1.__importDefault(require(\"./es2020\"));\nfunction default_1(fork) {\n fork.use(es2020_1.default);\n var types = fork.use(types_1.default);\n var Type = types.Type;\n var def = types.Type.def;\n var or = Type.or;\n var shared = fork.use(shared_1.default);\n var defaults = shared.defaults;\n def(\"AwaitExpression\")\n .build(\"argument\", \"all\")\n .field(\"argument\", or(def(\"Expression\"), null))\n .field(\"all\", Boolean, defaults[\"false\"]);\n // Decorators\n def(\"Decorator\")\n .bases(\"Node\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"Property\")\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"MethodDefinition\")\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n // Private names\n def(\"PrivateName\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"ClassPrivateProperty\")\n .bases(\"ClassProperty\")\n .build(\"key\", \"value\")\n .field(\"key\", def(\"PrivateName\"))\n .field(\"value\", or(def(\"Expression\"), null), defaults[\"null\"]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
34
+ "\"use strict\";;\n/**\n * Type annotation defs shared between Flow and TypeScript.\n * These defs could not be defined in ./flow.ts or ./typescript.ts directly\n * because they use the same name.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n var TypeAnnotation = or(def(\"TypeAnnotation\"), def(\"TSTypeAnnotation\"), null);\n var TypeParamDecl = or(def(\"TypeParameterDeclaration\"), def(\"TSTypeParameterDeclaration\"), null);\n def(\"Identifier\")\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n def(\"ObjectPattern\")\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n def(\"Function\")\n .field(\"returnType\", TypeAnnotation, defaults[\"null\"])\n .field(\"typeParameters\", TypeParamDecl, defaults[\"null\"]);\n def(\"ClassProperty\")\n .build(\"key\", \"value\", \"typeAnnotation\", \"static\")\n .field(\"value\", or(def(\"Expression\"), null))\n .field(\"static\", Boolean, defaults[\"false\"])\n .field(\"typeAnnotation\", TypeAnnotation, defaults[\"null\"]);\n [\"ClassDeclaration\",\n \"ClassExpression\",\n ].forEach(function (typeName) {\n def(typeName)\n .field(\"typeParameters\", TypeParamDecl, defaults[\"null\"])\n .field(\"superTypeParameters\", or(def(\"TypeParameterInstantiation\"), def(\"TSTypeParameterInstantiation\"), null), defaults[\"null\"])\n .field(\"implements\", or([def(\"ClassImplements\")], [def(\"TSExpressionWithTypeArguments\")]), defaults.emptyArray);\n });\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
35
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es_proposals_1 = tslib_1.__importDefault(require(\"./es-proposals\"));\nvar type_annotations_1 = tslib_1.__importDefault(require(\"./type-annotations\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es_proposals_1.default);\n fork.use(type_annotations_1.default);\n var types = fork.use(types_1.default);\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n // Base types\n def(\"Flow\").bases(\"Node\");\n def(\"FlowType\").bases(\"Flow\");\n // Type annotations\n def(\"AnyTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"EmptyTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"MixedTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"VoidTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"SymbolTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NumberTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"BigIntTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NumberLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Number)\n .field(\"raw\", String);\n // Babylon 6 differs in AST from Flow\n // same as NumberLiteralTypeAnnotation\n def(\"NumericLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Number)\n .field(\"raw\", String);\n def(\"BigIntLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", null)\n .field(\"raw\", String);\n def(\"StringTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"StringLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", String)\n .field(\"raw\", String);\n def(\"BooleanTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"BooleanLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"value\", \"raw\")\n .field(\"value\", Boolean)\n .field(\"raw\", String);\n def(\"TypeAnnotation\")\n .bases(\"Node\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"FlowType\"));\n def(\"NullableTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"FlowType\"));\n def(\"NullLiteralTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"NullTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ThisTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ExistsTypeAnnotation\")\n .bases(\"FlowType\")\n .build();\n def(\"ExistentialTypeParam\")\n .bases(\"FlowType\")\n .build();\n def(\"FunctionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"params\", \"returnType\", \"rest\", \"typeParameters\")\n .field(\"params\", [def(\"FunctionTypeParam\")])\n .field(\"returnType\", def(\"FlowType\"))\n .field(\"rest\", or(def(\"FunctionTypeParam\"), null))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null));\n def(\"FunctionTypeParam\")\n .bases(\"Node\")\n .build(\"name\", \"typeAnnotation\", \"optional\")\n .field(\"name\", or(def(\"Identifier\"), null))\n .field(\"typeAnnotation\", def(\"FlowType\"))\n .field(\"optional\", Boolean);\n def(\"ArrayTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"elementType\")\n .field(\"elementType\", def(\"FlowType\"));\n def(\"ObjectTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"properties\", \"indexers\", \"callProperties\")\n .field(\"properties\", [\n or(def(\"ObjectTypeProperty\"), def(\"ObjectTypeSpreadProperty\"))\n ])\n .field(\"indexers\", [def(\"ObjectTypeIndexer\")], defaults.emptyArray)\n .field(\"callProperties\", [def(\"ObjectTypeCallProperty\")], defaults.emptyArray)\n .field(\"inexact\", or(Boolean, void 0), defaults[\"undefined\"])\n .field(\"exact\", Boolean, defaults[\"false\"])\n .field(\"internalSlots\", [def(\"ObjectTypeInternalSlot\")], defaults.emptyArray);\n def(\"Variance\")\n .bases(\"Node\")\n .build(\"kind\")\n .field(\"kind\", or(\"plus\", \"minus\"));\n var LegacyVariance = or(def(\"Variance\"), \"plus\", \"minus\", null);\n def(\"ObjectTypeProperty\")\n .bases(\"Node\")\n .build(\"key\", \"value\", \"optional\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\")))\n .field(\"value\", def(\"FlowType\"))\n .field(\"optional\", Boolean)\n .field(\"variance\", LegacyVariance, defaults[\"null\"]);\n def(\"ObjectTypeIndexer\")\n .bases(\"Node\")\n .build(\"id\", \"key\", \"value\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"key\", def(\"FlowType\"))\n .field(\"value\", def(\"FlowType\"))\n .field(\"variance\", LegacyVariance, defaults[\"null\"])\n .field(\"static\", Boolean, defaults[\"false\"]);\n def(\"ObjectTypeCallProperty\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", def(\"FunctionTypeAnnotation\"))\n .field(\"static\", Boolean, defaults[\"false\"]);\n def(\"QualifiedTypeIdentifier\")\n .bases(\"Node\")\n .build(\"qualification\", \"id\")\n .field(\"qualification\", or(def(\"Identifier\"), def(\"QualifiedTypeIdentifier\")))\n .field(\"id\", def(\"Identifier\"));\n def(\"GenericTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"id\", \"typeParameters\")\n .field(\"id\", or(def(\"Identifier\"), def(\"QualifiedTypeIdentifier\")))\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null));\n def(\"MemberTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"object\", \"property\")\n .field(\"object\", def(\"Identifier\"))\n .field(\"property\", or(def(\"MemberTypeAnnotation\"), def(\"GenericTypeAnnotation\")));\n def(\"UnionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"IntersectionTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"TypeofTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"argument\")\n .field(\"argument\", def(\"FlowType\"));\n def(\"ObjectTypeSpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"FlowType\"));\n def(\"ObjectTypeInternalSlot\")\n .bases(\"Node\")\n .build(\"id\", \"value\", \"optional\", \"static\", \"method\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"value\", def(\"FlowType\"))\n .field(\"optional\", Boolean)\n .field(\"static\", Boolean)\n .field(\"method\", Boolean);\n def(\"TypeParameterDeclaration\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"TypeParameter\")]);\n def(\"TypeParameterInstantiation\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"FlowType\")]);\n def(\"TypeParameter\")\n .bases(\"FlowType\")\n .build(\"name\", \"variance\", \"bound\", \"default\")\n .field(\"name\", String)\n .field(\"variance\", LegacyVariance, defaults[\"null\"])\n .field(\"bound\", or(def(\"TypeAnnotation\"), null), defaults[\"null\"])\n .field(\"default\", or(def(\"FlowType\"), null), defaults[\"null\"]);\n def(\"ClassProperty\")\n .field(\"variance\", LegacyVariance, defaults[\"null\"]);\n def(\"ClassImplements\")\n .bases(\"Node\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"superClass\", or(def(\"Expression\"), null), defaults[\"null\"])\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null), defaults[\"null\"]);\n def(\"InterfaceTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"body\", \"extends\")\n .field(\"body\", def(\"ObjectTypeAnnotation\"))\n .field(\"extends\", or([def(\"InterfaceExtends\")], null), defaults[\"null\"]);\n def(\"InterfaceDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\", \"extends\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null), defaults[\"null\"])\n .field(\"body\", def(\"ObjectTypeAnnotation\"))\n .field(\"extends\", [def(\"InterfaceExtends\")]);\n def(\"DeclareInterface\")\n .bases(\"InterfaceDeclaration\")\n .build(\"id\", \"body\", \"extends\");\n def(\"InterfaceExtends\")\n .bases(\"Node\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterInstantiation\"), null), defaults[\"null\"]);\n def(\"TypeAlias\")\n .bases(\"Declaration\")\n .build(\"id\", \"typeParameters\", \"right\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null))\n .field(\"right\", def(\"FlowType\"));\n def(\"DeclareTypeAlias\")\n .bases(\"TypeAlias\")\n .build(\"id\", \"typeParameters\", \"right\");\n def(\"OpaqueType\")\n .bases(\"Declaration\")\n .build(\"id\", \"typeParameters\", \"impltype\", \"supertype\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"typeParameters\", or(def(\"TypeParameterDeclaration\"), null))\n .field(\"impltype\", def(\"FlowType\"))\n .field(\"supertype\", or(def(\"FlowType\"), null));\n def(\"DeclareOpaqueType\")\n .bases(\"OpaqueType\")\n .build(\"id\", \"typeParameters\", \"supertype\")\n .field(\"impltype\", or(def(\"FlowType\"), null));\n def(\"TypeCastExpression\")\n .bases(\"Expression\")\n .build(\"expression\", \"typeAnnotation\")\n .field(\"expression\", def(\"Expression\"))\n .field(\"typeAnnotation\", def(\"TypeAnnotation\"));\n def(\"TupleTypeAnnotation\")\n .bases(\"FlowType\")\n .build(\"types\")\n .field(\"types\", [def(\"FlowType\")]);\n def(\"DeclareVariable\")\n .bases(\"Statement\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"DeclareFunction\")\n .bases(\"Statement\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"predicate\", or(def(\"FlowPredicate\"), null), defaults[\"null\"]);\n def(\"DeclareClass\")\n .bases(\"InterfaceDeclaration\")\n .build(\"id\");\n def(\"DeclareModule\")\n .bases(\"Statement\")\n .build(\"id\", \"body\")\n .field(\"id\", or(def(\"Identifier\"), def(\"Literal\")))\n .field(\"body\", def(\"BlockStatement\"));\n def(\"DeclareModuleExports\")\n .bases(\"Statement\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TypeAnnotation\"));\n def(\"DeclareExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"default\", \"declaration\", \"specifiers\", \"source\")\n .field(\"default\", Boolean)\n .field(\"declaration\", or(def(\"DeclareVariable\"), def(\"DeclareFunction\"), def(\"DeclareClass\"), def(\"FlowType\"), // Implies default.\n def(\"TypeAlias\"), // Implies named type\n def(\"DeclareOpaqueType\"), // Implies named opaque type\n def(\"InterfaceDeclaration\"), null))\n .field(\"specifiers\", [or(def(\"ExportSpecifier\"), def(\"ExportBatchSpecifier\"))], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"DeclareExportAllDeclaration\")\n .bases(\"Declaration\")\n .build(\"source\")\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"ImportDeclaration\")\n .field(\"importKind\", or(\"value\", \"type\", \"typeof\"), function () { return \"value\"; });\n def(\"FlowPredicate\").bases(\"Flow\");\n def(\"InferredPredicate\")\n .bases(\"FlowPredicate\")\n .build();\n def(\"DeclaredPredicate\")\n .bases(\"FlowPredicate\")\n .build(\"value\")\n .field(\"value\", def(\"Expression\"));\n def(\"Function\")\n .field(\"predicate\", or(def(\"FlowPredicate\"), null), defaults[\"null\"]);\n def(\"CallExpression\")\n .field(\"typeArguments\", or(null, def(\"TypeParameterInstantiation\")), defaults[\"null\"]);\n def(\"NewExpression\")\n .field(\"typeArguments\", or(null, def(\"TypeParameterInstantiation\")), defaults[\"null\"]);\n // Enums\n def(\"EnumDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"body\", or(def(\"EnumBooleanBody\"), def(\"EnumNumberBody\"), def(\"EnumStringBody\"), def(\"EnumSymbolBody\")));\n def(\"EnumBooleanBody\")\n .build(\"members\", \"explicitType\")\n .field(\"members\", [def(\"EnumBooleanMember\")])\n .field(\"explicitType\", Boolean);\n def(\"EnumNumberBody\")\n .build(\"members\", \"explicitType\")\n .field(\"members\", [def(\"EnumNumberMember\")])\n .field(\"explicitType\", Boolean);\n def(\"EnumStringBody\")\n .build(\"members\", \"explicitType\")\n .field(\"members\", or([def(\"EnumStringMember\")], [def(\"EnumDefaultedMember\")]))\n .field(\"explicitType\", Boolean);\n def(\"EnumSymbolBody\")\n .build(\"members\")\n .field(\"members\", [def(\"EnumDefaultedMember\")]);\n def(\"EnumBooleanMember\")\n .build(\"id\", \"init\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"init\", or(def(\"Literal\"), Boolean));\n def(\"EnumNumberMember\")\n .build(\"id\", \"init\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"init\", def(\"Literal\"));\n def(\"EnumStringMember\")\n .build(\"id\", \"init\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"init\", def(\"Literal\"));\n def(\"EnumDefaultedMember\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
36
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es2020_1 = tslib_1.__importDefault(require(\"./es2020\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es2020_1.default);\n var types = fork.use(types_1.default);\n var defaults = fork.use(shared_1.default).defaults;\n var def = types.Type.def;\n var or = types.Type.or;\n def(\"VariableDeclaration\")\n .field(\"declarations\", [or(def(\"VariableDeclarator\"), def(\"Identifier\") // Esprima deviation.\n )]);\n def(\"Property\")\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\") // Esprima deviation.\n ));\n def(\"ArrayPattern\")\n .field(\"elements\", [or(def(\"Pattern\"), def(\"SpreadElement\"), null)]);\n def(\"ObjectPattern\")\n .field(\"properties\", [or(def(\"Property\"), def(\"PropertyPattern\"), def(\"SpreadPropertyPattern\"), def(\"SpreadProperty\") // Used by Esprima.\n )]);\n // Like ModuleSpecifier, except type:\"ExportSpecifier\" and buildable.\n // export {<id [as name]>} [from ...];\n def(\"ExportSpecifier\")\n .bases(\"ModuleSpecifier\")\n .build(\"id\", \"name\");\n // export <*> from ...;\n def(\"ExportBatchSpecifier\")\n .bases(\"Specifier\")\n .build();\n def(\"ExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"default\", \"declaration\", \"specifiers\", \"source\")\n .field(\"default\", Boolean)\n .field(\"declaration\", or(def(\"Declaration\"), def(\"Expression\"), // Implies default.\n null))\n .field(\"specifiers\", [or(def(\"ExportSpecifier\"), def(\"ExportBatchSpecifier\"))], defaults.emptyArray)\n .field(\"source\", or(def(\"Literal\"), null), defaults[\"null\"]);\n def(\"Block\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"Line\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
37
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar es_proposals_1 = tslib_1.__importDefault(require(\"./es-proposals\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n fork.use(es_proposals_1.default);\n var types = fork.use(types_1.default);\n var defaults = fork.use(shared_1.default).defaults;\n var def = types.Type.def;\n var or = types.Type.or;\n def(\"Noop\")\n .bases(\"Statement\")\n .build();\n def(\"DoExpression\")\n .bases(\"Expression\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"BindExpression\")\n .bases(\"Expression\")\n .build(\"object\", \"callee\")\n .field(\"object\", or(def(\"Expression\"), null))\n .field(\"callee\", def(\"Expression\"));\n def(\"ParenthesizedExpression\")\n .bases(\"Expression\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"ExportNamespaceSpecifier\")\n .bases(\"Specifier\")\n .build(\"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"ExportDefaultSpecifier\")\n .bases(\"Specifier\")\n .build(\"exported\")\n .field(\"exported\", def(\"Identifier\"));\n def(\"CommentBlock\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"CommentLine\")\n .bases(\"Comment\")\n .build(\"value\", /*optional:*/ \"leading\", \"trailing\");\n def(\"Directive\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", def(\"DirectiveLiteral\"));\n def(\"DirectiveLiteral\")\n .bases(\"Node\", \"Expression\")\n .build(\"value\")\n .field(\"value\", String, defaults[\"use strict\"]);\n def(\"InterpreterDirective\")\n .bases(\"Node\")\n .build(\"value\")\n .field(\"value\", String);\n def(\"BlockStatement\")\n .bases(\"Statement\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")])\n .field(\"directives\", [def(\"Directive\")], defaults.emptyArray);\n def(\"Program\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")])\n .field(\"directives\", [def(\"Directive\")], defaults.emptyArray)\n .field(\"interpreter\", or(def(\"InterpreterDirective\"), null), defaults[\"null\"]);\n // Split Literal\n def(\"StringLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", String);\n def(\"NumericLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", Number)\n .field(\"raw\", or(String, null), defaults[\"null\"])\n .field(\"extra\", {\n rawValue: Number,\n raw: String\n }, function getDefault() {\n return {\n rawValue: this.value,\n raw: this.value + \"\"\n };\n });\n def(\"BigIntLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n // Only String really seems appropriate here, since BigInt values\n // often exceed the limits of JS numbers.\n .field(\"value\", or(String, Number))\n .field(\"extra\", {\n rawValue: String,\n raw: String\n }, function getDefault() {\n return {\n rawValue: String(this.value),\n raw: this.value + \"n\"\n };\n });\n def(\"NullLiteral\")\n .bases(\"Literal\")\n .build()\n .field(\"value\", null, defaults[\"null\"]);\n def(\"BooleanLiteral\")\n .bases(\"Literal\")\n .build(\"value\")\n .field(\"value\", Boolean);\n def(\"RegExpLiteral\")\n .bases(\"Literal\")\n .build(\"pattern\", \"flags\")\n .field(\"pattern\", String)\n .field(\"flags\", String)\n .field(\"value\", RegExp, function () {\n return new RegExp(this.pattern, this.flags);\n });\n var ObjectExpressionProperty = or(def(\"Property\"), def(\"ObjectMethod\"), def(\"ObjectProperty\"), def(\"SpreadProperty\"), def(\"SpreadElement\"));\n // Split Property -> ObjectProperty and ObjectMethod\n def(\"ObjectExpression\")\n .bases(\"Expression\")\n .build(\"properties\")\n .field(\"properties\", [ObjectExpressionProperty]);\n // ObjectMethod hoist .value properties to own properties\n def(\"ObjectMethod\")\n .bases(\"Node\", \"Function\")\n .build(\"kind\", \"key\", \"params\", \"body\", \"computed\")\n .field(\"kind\", or(\"method\", \"get\", \"set\"))\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"params\", [def(\"Pattern\")])\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"accessibility\", // TypeScript\n or(def(\"Literal\"), null), defaults[\"null\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"ObjectProperty\")\n .bases(\"Node\")\n .build(\"key\", \"value\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")))\n .field(\"value\", or(def(\"Expression\"), def(\"Pattern\")))\n .field(\"accessibility\", // TypeScript\n or(def(\"Literal\"), null), defaults[\"null\"])\n .field(\"computed\", Boolean, defaults[\"false\"]);\n var ClassBodyElement = or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"), def(\"ClassPrivateProperty\"), def(\"ClassMethod\"), def(\"ClassPrivateMethod\"));\n // MethodDefinition -> ClassMethod\n def(\"ClassBody\")\n .bases(\"Declaration\")\n .build(\"body\")\n .field(\"body\", [ClassBodyElement]);\n def(\"ClassMethod\")\n .bases(\"Declaration\", \"Function\")\n .build(\"kind\", \"key\", \"params\", \"body\", \"computed\", \"static\")\n .field(\"key\", or(def(\"Literal\"), def(\"Identifier\"), def(\"Expression\")));\n def(\"ClassPrivateMethod\")\n .bases(\"Declaration\", \"Function\")\n .build(\"key\", \"params\", \"body\", \"kind\", \"computed\", \"static\")\n .field(\"key\", def(\"PrivateName\"));\n [\"ClassMethod\",\n \"ClassPrivateMethod\",\n ].forEach(function (typeName) {\n def(typeName)\n .field(\"kind\", or(\"get\", \"set\", \"method\", \"constructor\"), function () { return \"method\"; })\n .field(\"body\", def(\"BlockStatement\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"static\", or(Boolean, null), defaults[\"null\"])\n .field(\"abstract\", or(Boolean, null), defaults[\"null\"])\n .field(\"access\", or(\"public\", \"private\", \"protected\", null), defaults[\"null\"])\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", null), defaults[\"null\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"])\n .field(\"optional\", or(Boolean, null), defaults[\"null\"]);\n });\n var ObjectPatternProperty = or(def(\"Property\"), def(\"PropertyPattern\"), def(\"SpreadPropertyPattern\"), def(\"SpreadProperty\"), // Used by Esprima\n def(\"ObjectProperty\"), // Babel 6\n def(\"RestProperty\") // Babel 6\n );\n // Split into RestProperty and SpreadProperty\n def(\"ObjectPattern\")\n .bases(\"Pattern\")\n .build(\"properties\")\n .field(\"properties\", [ObjectPatternProperty])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"]);\n def(\"SpreadProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"RestProperty\")\n .bases(\"Node\")\n .build(\"argument\")\n .field(\"argument\", def(\"Expression\"));\n def(\"ForAwaitStatement\")\n .bases(\"Statement\")\n .build(\"left\", \"right\", \"body\")\n .field(\"left\", or(def(\"VariableDeclaration\"), def(\"Expression\")))\n .field(\"right\", def(\"Expression\"))\n .field(\"body\", def(\"Statement\"));\n // The callee node of a dynamic import(...) expression.\n def(\"Import\")\n .bases(\"Expression\")\n .build();\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
38
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar babel_core_1 = tslib_1.__importDefault(require(\"./babel-core\"));\nvar flow_1 = tslib_1.__importDefault(require(\"./flow\"));\nfunction default_1(fork) {\n fork.use(babel_core_1.default);\n fork.use(flow_1.default);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
39
+ "\"use strict\";;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar babel_core_1 = tslib_1.__importDefault(require(\"./babel-core\"));\nvar type_annotations_1 = tslib_1.__importDefault(require(\"./type-annotations\"));\nvar types_1 = tslib_1.__importDefault(require(\"../lib/types\"));\nvar shared_1 = tslib_1.__importDefault(require(\"../lib/shared\"));\nfunction default_1(fork) {\n // Since TypeScript is parsed by Babylon, include the core Babylon types\n // but omit the Flow-related types.\n fork.use(babel_core_1.default);\n fork.use(type_annotations_1.default);\n var types = fork.use(types_1.default);\n var n = types.namedTypes;\n var def = types.Type.def;\n var or = types.Type.or;\n var defaults = fork.use(shared_1.default).defaults;\n var StringLiteral = types.Type.from(function (value, deep) {\n if (n.StringLiteral &&\n n.StringLiteral.check(value, deep)) {\n return true;\n }\n if (n.Literal &&\n n.Literal.check(value, deep) &&\n typeof value.value === \"string\") {\n return true;\n }\n return false;\n }, \"StringLiteral\");\n def(\"TSType\")\n .bases(\"Node\");\n var TSEntityName = or(def(\"Identifier\"), def(\"TSQualifiedName\"));\n def(\"TSTypeReference\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"typeName\", \"typeParameters\")\n .field(\"typeName\", TSEntityName);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeParameters field.\n def(\"TSHasOptionalTypeParameterInstantiation\")\n .field(\"typeParameters\", or(def(\"TSTypeParameterInstantiation\"), null), defaults[\"null\"]);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeParameters field.\n def(\"TSHasOptionalTypeParameters\")\n .field(\"typeParameters\", or(def(\"TSTypeParameterDeclaration\"), null, void 0), defaults[\"null\"]);\n // An abstract (non-buildable) base type that provide a commonly-needed\n // optional .typeAnnotation field.\n def(\"TSHasOptionalTypeAnnotation\")\n .field(\"typeAnnotation\", or(def(\"TSTypeAnnotation\"), null), defaults[\"null\"]);\n def(\"TSQualifiedName\")\n .bases(\"Node\")\n .build(\"left\", \"right\")\n .field(\"left\", TSEntityName)\n .field(\"right\", TSEntityName);\n def(\"TSAsExpression\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"expression\", \"typeAnnotation\")\n .field(\"expression\", def(\"Expression\"))\n .field(\"typeAnnotation\", def(\"TSType\"))\n .field(\"extra\", or({ parenthesized: Boolean }, null), defaults[\"null\"]);\n def(\"TSNonNullExpression\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n [\n \"TSAnyKeyword\",\n \"TSBigIntKeyword\",\n \"TSBooleanKeyword\",\n \"TSNeverKeyword\",\n \"TSNullKeyword\",\n \"TSNumberKeyword\",\n \"TSObjectKeyword\",\n \"TSStringKeyword\",\n \"TSSymbolKeyword\",\n \"TSUndefinedKeyword\",\n \"TSUnknownKeyword\",\n \"TSVoidKeyword\",\n \"TSThisType\",\n ].forEach(function (keywordType) {\n def(keywordType)\n .bases(\"TSType\")\n .build();\n });\n def(\"TSArrayType\")\n .bases(\"TSType\")\n .build(\"elementType\")\n .field(\"elementType\", def(\"TSType\"));\n def(\"TSLiteralType\")\n .bases(\"TSType\")\n .build(\"literal\")\n .field(\"literal\", or(def(\"NumericLiteral\"), def(\"StringLiteral\"), def(\"BooleanLiteral\"), def(\"TemplateLiteral\"), def(\"UnaryExpression\")));\n [\"TSUnionType\",\n \"TSIntersectionType\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"TSType\")\n .build(\"types\")\n .field(\"types\", [def(\"TSType\")]);\n });\n def(\"TSConditionalType\")\n .bases(\"TSType\")\n .build(\"checkType\", \"extendsType\", \"trueType\", \"falseType\")\n .field(\"checkType\", def(\"TSType\"))\n .field(\"extendsType\", def(\"TSType\"))\n .field(\"trueType\", def(\"TSType\"))\n .field(\"falseType\", def(\"TSType\"));\n def(\"TSInferType\")\n .bases(\"TSType\")\n .build(\"typeParameter\")\n .field(\"typeParameter\", def(\"TSTypeParameter\"));\n def(\"TSParenthesizedType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n var ParametersType = [or(def(\"Identifier\"), def(\"RestElement\"), def(\"ArrayPattern\"), def(\"ObjectPattern\"))];\n [\"TSFunctionType\",\n \"TSConstructorType\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"TSType\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\")\n .field(\"parameters\", ParametersType);\n });\n def(\"TSDeclareFunction\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"params\", \"returnType\")\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"id\", or(def(\"Identifier\"), null), defaults[\"null\"])\n .field(\"params\", [def(\"Pattern\")])\n // tSFunctionTypeAnnotationCommon\n .field(\"returnType\", or(def(\"TSTypeAnnotation\"), def(\"Noop\"), // Still used?\n null), defaults[\"null\"]);\n def(\"TSDeclareMethod\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"key\", \"params\", \"returnType\")\n .field(\"async\", Boolean, defaults[\"false\"])\n .field(\"generator\", Boolean, defaults[\"false\"])\n .field(\"params\", [def(\"Pattern\")])\n // classMethodOrPropertyCommon\n .field(\"abstract\", Boolean, defaults[\"false\"])\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"static\", Boolean, defaults[\"false\"])\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"key\", or(def(\"Identifier\"), def(\"StringLiteral\"), def(\"NumericLiteral\"), \n // Only allowed if .computed is true.\n def(\"Expression\")))\n // classMethodOrDeclareMethodCommon\n .field(\"kind\", or(\"get\", \"set\", \"method\", \"constructor\"), function getDefault() { return \"method\"; })\n .field(\"access\", // Not \"accessibility\"?\n or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"decorators\", or([def(\"Decorator\")], null), defaults[\"null\"])\n // tSFunctionTypeAnnotationCommon\n .field(\"returnType\", or(def(\"TSTypeAnnotation\"), def(\"Noop\"), // Still used?\n null), defaults[\"null\"]);\n def(\"TSMappedType\")\n .bases(\"TSType\")\n .build(\"typeParameter\", \"typeAnnotation\")\n .field(\"readonly\", or(Boolean, \"+\", \"-\"), defaults[\"false\"])\n .field(\"typeParameter\", def(\"TSTypeParameter\"))\n .field(\"optional\", or(Boolean, \"+\", \"-\"), defaults[\"false\"])\n .field(\"typeAnnotation\", or(def(\"TSType\"), null), defaults[\"null\"]);\n def(\"TSTupleType\")\n .bases(\"TSType\")\n .build(\"elementTypes\")\n .field(\"elementTypes\", [or(def(\"TSType\"), def(\"TSNamedTupleMember\"))]);\n def(\"TSNamedTupleMember\")\n .bases(\"TSType\")\n .build(\"label\", \"elementType\", \"optional\")\n .field(\"label\", def(\"Identifier\"))\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"elementType\", def(\"TSType\"));\n def(\"TSRestType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSOptionalType\")\n .bases(\"TSType\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSIndexedAccessType\")\n .bases(\"TSType\")\n .build(\"objectType\", \"indexType\")\n .field(\"objectType\", def(\"TSType\"))\n .field(\"indexType\", def(\"TSType\"));\n def(\"TSTypeOperator\")\n .bases(\"TSType\")\n .build(\"operator\")\n .field(\"operator\", String)\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSTypeAnnotation\")\n .bases(\"Node\")\n .build(\"typeAnnotation\")\n .field(\"typeAnnotation\", or(def(\"TSType\"), def(\"TSTypeAnnotation\")));\n def(\"TSIndexSignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\", \"typeAnnotation\")\n .field(\"parameters\", [def(\"Identifier\")]) // Length === 1\n .field(\"readonly\", Boolean, defaults[\"false\"]);\n def(\"TSPropertySignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeAnnotation\")\n .build(\"key\", \"typeAnnotation\", \"optional\")\n .field(\"key\", def(\"Expression\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"readonly\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSMethodSignature\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"key\", \"parameters\", \"typeAnnotation\")\n .field(\"key\", def(\"Expression\"))\n .field(\"computed\", Boolean, defaults[\"false\"])\n .field(\"optional\", Boolean, defaults[\"false\"])\n .field(\"parameters\", ParametersType);\n def(\"TSTypePredicate\")\n .bases(\"TSTypeAnnotation\", \"TSType\")\n .build(\"parameterName\", \"typeAnnotation\", \"asserts\")\n .field(\"parameterName\", or(def(\"Identifier\"), def(\"TSThisType\")))\n .field(\"typeAnnotation\", or(def(\"TSTypeAnnotation\"), null), defaults[\"null\"])\n .field(\"asserts\", Boolean, defaults[\"false\"]);\n [\"TSCallSignatureDeclaration\",\n \"TSConstructSignatureDeclaration\",\n ].forEach(function (typeName) {\n def(typeName)\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\", \"TSHasOptionalTypeAnnotation\")\n .build(\"parameters\", \"typeAnnotation\")\n .field(\"parameters\", ParametersType);\n });\n def(\"TSEnumMember\")\n .bases(\"Node\")\n .build(\"id\", \"initializer\")\n .field(\"id\", or(def(\"Identifier\"), StringLiteral))\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSTypeQuery\")\n .bases(\"TSType\")\n .build(\"exprName\")\n .field(\"exprName\", or(TSEntityName, def(\"TSImportType\")));\n // Inferred from Babylon's tsParseTypeMember method.\n var TSTypeMember = or(def(\"TSCallSignatureDeclaration\"), def(\"TSConstructSignatureDeclaration\"), def(\"TSIndexSignature\"), def(\"TSMethodSignature\"), def(\"TSPropertySignature\"));\n def(\"TSTypeLiteral\")\n .bases(\"TSType\")\n .build(\"members\")\n .field(\"members\", [TSTypeMember]);\n def(\"TSTypeParameter\")\n .bases(\"Identifier\")\n .build(\"name\", \"constraint\", \"default\")\n .field(\"name\", String)\n .field(\"constraint\", or(def(\"TSType\"), void 0), defaults[\"undefined\"])\n .field(\"default\", or(def(\"TSType\"), void 0), defaults[\"undefined\"]);\n def(\"TSTypeAssertion\")\n .bases(\"Expression\", \"Pattern\")\n .build(\"typeAnnotation\", \"expression\")\n .field(\"typeAnnotation\", def(\"TSType\"))\n .field(\"expression\", def(\"Expression\"))\n .field(\"extra\", or({ parenthesized: Boolean }, null), defaults[\"null\"]);\n def(\"TSTypeParameterDeclaration\")\n .bases(\"Declaration\")\n .build(\"params\")\n .field(\"params\", [def(\"TSTypeParameter\")]);\n def(\"TSTypeParameterInstantiation\")\n .bases(\"Node\")\n .build(\"params\")\n .field(\"params\", [def(\"TSType\")]);\n def(\"TSEnumDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"members\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"const\", Boolean, defaults[\"false\"])\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"members\", [def(\"TSEnumMember\")])\n .field(\"initializer\", or(def(\"Expression\"), null), defaults[\"null\"]);\n def(\"TSTypeAliasDeclaration\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"typeAnnotation\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"typeAnnotation\", def(\"TSType\"));\n def(\"TSModuleBlock\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [def(\"Statement\")]);\n def(\"TSModuleDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"body\")\n .field(\"id\", or(StringLiteral, TSEntityName))\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"global\", Boolean, defaults[\"false\"])\n .field(\"body\", or(def(\"TSModuleBlock\"), def(\"TSModuleDeclaration\"), null), defaults[\"null\"]);\n def(\"TSImportType\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"argument\", \"qualifier\", \"typeParameters\")\n .field(\"argument\", StringLiteral)\n .field(\"qualifier\", or(TSEntityName, void 0), defaults[\"undefined\"]);\n def(\"TSImportEqualsDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\", \"moduleReference\")\n .field(\"id\", def(\"Identifier\"))\n .field(\"isExport\", Boolean, defaults[\"false\"])\n .field(\"moduleReference\", or(TSEntityName, def(\"TSExternalModuleReference\")));\n def(\"TSExternalModuleReference\")\n .bases(\"Declaration\")\n .build(\"expression\")\n .field(\"expression\", StringLiteral);\n def(\"TSExportAssignment\")\n .bases(\"Statement\")\n .build(\"expression\")\n .field(\"expression\", def(\"Expression\"));\n def(\"TSNamespaceExportDeclaration\")\n .bases(\"Declaration\")\n .build(\"id\")\n .field(\"id\", def(\"Identifier\"));\n def(\"TSInterfaceBody\")\n .bases(\"Node\")\n .build(\"body\")\n .field(\"body\", [TSTypeMember]);\n def(\"TSExpressionWithTypeArguments\")\n .bases(\"TSType\", \"TSHasOptionalTypeParameterInstantiation\")\n .build(\"expression\", \"typeParameters\")\n .field(\"expression\", TSEntityName);\n def(\"TSInterfaceDeclaration\")\n .bases(\"Declaration\", \"TSHasOptionalTypeParameters\")\n .build(\"id\", \"body\")\n .field(\"id\", TSEntityName)\n .field(\"declare\", Boolean, defaults[\"false\"])\n .field(\"extends\", or([def(\"TSExpressionWithTypeArguments\")], null), defaults[\"null\"])\n .field(\"body\", def(\"TSInterfaceBody\"));\n def(\"TSParameterProperty\")\n .bases(\"Pattern\")\n .build(\"parameter\")\n .field(\"accessibility\", or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"])\n .field(\"readonly\", Boolean, defaults[\"false\"])\n .field(\"parameter\", or(def(\"Identifier\"), def(\"AssignmentPattern\")));\n def(\"ClassProperty\")\n .field(\"access\", // Not \"accessibility\"?\n or(\"public\", \"private\", \"protected\", void 0), defaults[\"undefined\"]);\n // Defined already in es6 and babel-core.\n def(\"ClassBody\")\n .field(\"body\", [or(def(\"MethodDefinition\"), def(\"VariableDeclarator\"), def(\"ClassPropertyDefinition\"), def(\"ClassProperty\"), def(\"ClassPrivateProperty\"), def(\"ClassMethod\"), def(\"ClassPrivateMethod\"), \n // Just need to add these types:\n def(\"TSDeclareMethod\"), TSTypeMember)]);\n}\nexports.default = default_1;\nmodule.exports = exports[\"default\"];\n",
40
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.namedTypes = void 0;\nvar namedTypes;\n(function (namedTypes) {\n})(namedTypes = exports.namedTypes || (exports.namedTypes = {}));\n",
41
+ "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.visit = exports.use = exports.Type = exports.someField = exports.PathVisitor = exports.Path = exports.NodePath = exports.namedTypes = exports.getSupertypeNames = exports.getFieldValue = exports.getFieldNames = exports.getBuilderName = exports.finalize = exports.eachField = exports.defineMethod = exports.builtInTypes = exports.builders = exports.astNodesAreEquivalent = void 0;\nvar tslib_1 = require(\"tslib\");\nvar fork_1 = tslib_1.__importDefault(require(\"./fork\"));\nvar core_1 = tslib_1.__importDefault(require(\"./def/core\"));\nvar es6_1 = tslib_1.__importDefault(require(\"./def/es6\"));\nvar es2016_1 = tslib_1.__importDefault(require(\"./def/es2016\"));\nvar es2017_1 = tslib_1.__importDefault(require(\"./def/es2017\"));\nvar es2018_1 = tslib_1.__importDefault(require(\"./def/es2018\"));\nvar es2019_1 = tslib_1.__importDefault(require(\"./def/es2019\"));\nvar es2020_1 = tslib_1.__importDefault(require(\"./def/es2020\"));\nvar jsx_1 = tslib_1.__importDefault(require(\"./def/jsx\"));\nvar flow_1 = tslib_1.__importDefault(require(\"./def/flow\"));\nvar esprima_1 = tslib_1.__importDefault(require(\"./def/esprima\"));\nvar babel_1 = tslib_1.__importDefault(require(\"./def/babel\"));\nvar typescript_1 = tslib_1.__importDefault(require(\"./def/typescript\"));\nvar es_proposals_1 = tslib_1.__importDefault(require(\"./def/es-proposals\"));\nvar namedTypes_1 = require(\"./gen/namedTypes\");\nObject.defineProperty(exports, \"namedTypes\", { enumerable: true, get: function () { return namedTypes_1.namedTypes; } });\nvar _a = fork_1.default([\n // This core module of AST types captures ES5 as it is parsed today by\n // git://github.com/ariya/esprima.git#master.\n core_1.default,\n // Feel free to add to or remove from this list of extension modules to\n // configure the precise type hierarchy that you need.\n es6_1.default,\n es2016_1.default,\n es2017_1.default,\n es2018_1.default,\n es2019_1.default,\n es2020_1.default,\n jsx_1.default,\n flow_1.default,\n esprima_1.default,\n babel_1.default,\n typescript_1.default,\n es_proposals_1.default,\n]), astNodesAreEquivalent = _a.astNodesAreEquivalent, builders = _a.builders, builtInTypes = _a.builtInTypes, defineMethod = _a.defineMethod, eachField = _a.eachField, finalize = _a.finalize, getBuilderName = _a.getBuilderName, getFieldNames = _a.getFieldNames, getFieldValue = _a.getFieldValue, getSupertypeNames = _a.getSupertypeNames, n = _a.namedTypes, NodePath = _a.NodePath, Path = _a.Path, PathVisitor = _a.PathVisitor, someField = _a.someField, Type = _a.Type, use = _a.use, visit = _a.visit;\nexports.astNodesAreEquivalent = astNodesAreEquivalent;\nexports.builders = builders;\nexports.builtInTypes = builtInTypes;\nexports.defineMethod = defineMethod;\nexports.eachField = eachField;\nexports.finalize = finalize;\nexports.getBuilderName = getBuilderName;\nexports.getFieldNames = getFieldNames;\nexports.getFieldValue = getFieldValue;\nexports.getSupertypeNames = getSupertypeNames;\nexports.NodePath = NodePath;\nexports.Path = Path;\nexports.PathVisitor = PathVisitor;\nexports.someField = someField;\nexports.Type = Type;\nexports.use = use;\nexports.visit = visit;\n// Populate the exported fields of the namedTypes namespace, while still\n// retaining its member types.\nObject.assign(namedTypes_1.namedTypes, n);\n",
42
+ "import { parse, print } from \"recast\";\nimport { builders } from \"ast-types\";\n\nexport async function customRequestParser(original: string) {\n function isExportedControllerClassDeclaration(body: any) {\n return (\n (body.type === \"ExportNamedDeclaration\" ||\n body.type === \"ExportDefaultDeclaration\") &&\n body.declaration?.type === \"ClassDeclaration\" &&\n (body.declaration.superClass?.name === \"Controller\" ||\n body.declaration.superClass?.name === \"ResourceController\")\n );\n }\n\n function isController(body: any) {\n return (\n body.type === \"ClassDeclaration\" &&\n (body.superClass?.name === \"Controller\" ||\n body.superClass?.name === \"ResourceController\")\n );\n }\n\n function isRouterClassDeclaration(body: any) {\n return (\n body.type === \"ClassDeclaration\" &&\n (body.superClass?.name === \"ApiRouter\" ||\n body.superClass?.name === \"ViewRouter\")\n );\n }\n\n function isRouterExportedClassDeclaration(body: any) {\n return (\n (body.type === \"ExportNamedDeclaration\" ||\n body.type === \"ExportDefaultDeclaration\") &&\n body.declaration?.type === \"ClassDeclaration\" &&\n (body.declaration.superClass?.name === \"ApiRouter\" ||\n body.declaration.superClass?.name === \"ViewRouter\")\n );\n }\n\n function controllerBodyParser(body: any) {\n for (const node of body.body) {\n if (node.type === \"ClassMethod\") {\n if (node.params.length === 0) {\n continue;\n }\n if (\n node.accessibility === \"private\" ||\n node.accessibility === \"protected\"\n ) {\n continue;\n }\n\n const paramName = node.params[0].name;\n let reqName = \"\";\n try {\n reqName = node.params[0].typeAnnotation.typeAnnotation.typeName.name;\n } catch (err) {\n // Do something\n }\n if (reqName === \"\") {\n continue;\n }\n\n const left = builders.identifier(paramName);\n const right = builders.newExpression(builders.identifier(reqName), []);\n const _node = builders.assignmentPattern(left, right);\n node.params[0] = _node;\n }\n }\n }\n\n function apiRouterParser(body: any) {\n for (const node of body) {\n if (\n node.key.name === \"routes\" &&\n node.value.type === \"ObjectExpression\"\n ) {\n for (const property of node.value.properties) {\n if (property?.value?.type === \"Identifier\") {\n continue;\n }\n\n const args =\n property?.value?.callee?.object?.arguments ??\n property?.value?.arguments;\n\n for (const arg of args ?? []) {\n if (\n !(\n arg.type === \"ArrowFunctionExpression\" ||\n arg.type === \"FunctionExpression\"\n )\n ) {\n continue;\n }\n\n const [param] = arg.params;\n\n if (!param) {\n continue;\n }\n\n let reqName = \"\";\n try {\n reqName = param.typeAnnotation.typeAnnotation.typeName.name;\n } catch (err) {\n // Do something\n }\n if (reqName === \"\") {\n continue;\n }\n const name = param.name;\n const left = builders.identifier(name);\n const right = builders.newExpression(\n builders.identifier(reqName),\n [],\n );\n const _node = builders.assignmentPattern(left, right);\n arg.params[0] = _node;\n }\n }\n }\n }\n }\n\n const orgFile = await parse(original, {\n parser: await import(\"recast/parsers/typescript\"),\n });\n\n for (const body of orgFile.program.body) {\n if (!body || body?.type === \"ImportDeclaration\") {\n continue;\n }\n\n if (isExportedControllerClassDeclaration(body)) {\n controllerBodyParser(body.declaration.body);\n continue;\n }\n\n if (isController(body)) {\n controllerBodyParser(body.body);\n continue;\n }\n\n if (isRouterClassDeclaration(body)) {\n apiRouterParser(body.body.body);\n continue;\n }\n\n if (isRouterExportedClassDeclaration(body)) {\n apiRouterParser(body.declaration.body.body);\n continue;\n }\n }\n return print(orgFile).code.replace(\"type HttpRequest\", \"HttpRequest\");\n}\n",
43
+ "import type { BunPlugin } from \"bun\";\nimport { customRequestParser } from \"./customRequestParser\";\n\n// Server-side route/controller files whose typed `Request` params must be\n// rewritten to default-instantiated arguments, e.g.\n// async (req: HttpRequest<...>) => ... -> async (req = new HttpRequest()) => ...\n// The framework invokes handlers with NO arguments (see `RouteHandler.run` in\n// `http/ApiRouter.ts`), and `new HttpRequest()` reads the current request from\n// the AsyncLocalStorage context — so without this rewrite `req` is `undefined`\n// at runtime. This used to be done by the gemi Vite plugin, but this code is now\n// compiled by Bun (build: `Bun.build` of `app/server.ts`; dev: `bun --hot`), so\n// the transform runs here instead. Matches both `/http/controllers/` and\n// `/http/routes/` (`.ts`/`.tsx`), on the resolved absolute path.\nconst CUSTOM_REQUEST_FILTER = /[\\\\/]http[\\\\/](controllers|routes)[\\\\/].+\\.tsx?$/;\n\nexport function gemiPlugin(): BunPlugin {\n return {\n name: \"gemi-custom-request\",\n setup(build) {\n build.onLoad({ filter: CUSTOM_REQUEST_FILTER }, async (args) => {\n const source = await Bun.file(args.path).text();\n const contents = await customRequestParser(source);\n return {\n contents,\n loader: args.path.endsWith(\".tsx\") ? \"tsx\" : \"ts\",\n };\n });\n },\n };\n}\n"
44
+ ],
45
+ "mappings": "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",
46
+ "debugId": "28A7FC3BA915670864756E2164756E21",
47
+ "names": []
48
+ }