jass 0.9.1 → 0.9.3

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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/jass.rb +5 -0
  4. data/lib/jass/compiler.rb +5 -0
  5. data/lib/jass/plugin.rb +2 -1
  6. data/lib/jass/version.rb +1 -1
  7. data/vendor/node_modules/@types/estree/index.d.ts +4 -2
  8. data/vendor/node_modules/@types/estree/package.json +2 -2
  9. data/vendor/node_modules/acorn/bin/_acorn.js +12 -12
  10. data/vendor/node_modules/acorn/bin/run_test262.js +2 -3
  11. data/vendor/node_modules/acorn/bin/test262.whitelist +0 -5
  12. data/vendor/node_modules/acorn/dist/acorn.es.js +76 -68
  13. data/vendor/node_modules/acorn/dist/acorn.js +76 -68
  14. data/vendor/node_modules/acorn/dist/acorn_loose.es.js +42 -30
  15. data/vendor/node_modules/acorn/dist/acorn_loose.js +42 -30
  16. data/vendor/node_modules/acorn/dist/walk.es.js +47 -43
  17. data/vendor/node_modules/acorn/dist/walk.js +47 -43
  18. data/vendor/node_modules/acorn/package.json +9 -5
  19. data/vendor/node_modules/chalk/index.js.flow +93 -0
  20. data/vendor/node_modules/chalk/package.json +8 -3
  21. data/vendor/node_modules/color-convert/conversions.js +36 -29
  22. data/vendor/node_modules/color-convert/package.json +4 -4
  23. data/vendor/node_modules/estree-walker/index.d.ts +17 -0
  24. data/vendor/node_modules/estree-walker/package.json +2 -1
  25. data/vendor/node_modules/fill-range/index.js +2 -2
  26. data/vendor/node_modules/fill-range/package.json +24 -7
  27. data/vendor/node_modules/is-reference/node_modules/@types/estree/index.d.ts +546 -0
  28. data/vendor/node_modules/is-reference/node_modules/@types/estree/package.json +22 -0
  29. data/vendor/node_modules/math-random/browser.js +17 -0
  30. data/vendor/node_modules/math-random/node.js +13 -0
  31. data/vendor/node_modules/math-random/package.json +31 -0
  32. data/vendor/node_modules/math-random/test.js +26 -0
  33. data/vendor/node_modules/nodent-compiler/compiler.js +115 -11
  34. data/vendor/node_modules/nodent-compiler/{lib/output.js → output.js} +0 -0
  35. data/vendor/node_modules/nodent-compiler/package.json +8 -4
  36. data/vendor/node_modules/{nodent-compiler/lib → nodent-transform}/arboriculture.js +1340 -1107
  37. data/vendor/node_modules/nodent-transform/package.json +19 -0
  38. data/vendor/node_modules/path-parse/package.json +1 -1
  39. data/vendor/node_modules/pretty-ms/index.js +2 -1
  40. data/vendor/node_modules/pretty-ms/package.json +2 -3
  41. data/vendor/node_modules/randomatic/index.js +12 -2
  42. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +6 -7
  43. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +9 -16
  44. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +112 -102
  45. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +18 -20
  46. data/vendor/node_modules/randomatic/package.json +15 -13
  47. data/vendor/node_modules/repeat-element/index.js +1 -1
  48. data/vendor/node_modules/repeat-element/package.json +27 -22
  49. data/vendor/node_modules/resolve/lib/async.js +20 -17
  50. data/vendor/node_modules/resolve/lib/core.js +2 -2
  51. data/vendor/node_modules/resolve/lib/core.json +4 -1
  52. data/vendor/node_modules/resolve/lib/sync.js +52 -13
  53. data/vendor/node_modules/resolve/package.json +3 -3
  54. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +50 -12
  55. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +50 -12
  56. data/vendor/node_modules/rollup-plugin-commonjs/package.json +2 -2
  57. data/vendor/node_modules/rollup-plugin-commonjs/src/index.js +49 -11
  58. data/vendor/node_modules/rollup-plugin-commonjs/src/transform.js +1 -1
  59. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js +82 -85
  60. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es.js +82 -85
  61. data/vendor/node_modules/rollup-plugin-node-resolve/package.json +1 -1
  62. data/vendor/node_modules/rollup-plugin-node-resolve/src/index.js +81 -84
  63. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +81 -2
  64. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +81 -3
  65. data/vendor/node_modules/rollup-pluginutils/package.json +12 -6
  66. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +10 -2
  67. data/vendor/node_modules/rollup-pluginutils/src/dataToEsm.js +69 -0
  68. data/vendor/node_modules/rollup-pluginutils/src/index.js +1 -0
  69. data/vendor/node_modules/supports-color/index.js +1 -5
  70. data/vendor/node_modules/supports-color/package.json +51 -51
  71. data/vendor/yarn.lock +65 -70
  72. metadata +16 -21
  73. data/vendor/node_modules/irregular-plurals/irregular-plurals.json +0 -146
  74. data/vendor/node_modules/irregular-plurals/package.json +0 -39
  75. data/vendor/node_modules/nodent-compiler/lib/parser.js +0 -291
  76. data/vendor/node_modules/path-parse/index.min.js +0 -1
  77. data/vendor/node_modules/path-parse/test.min.js +0 -1
  78. data/vendor/node_modules/plur/index.js +0 -20
  79. data/vendor/node_modules/plur/package.json +0 -42
  80. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +0 -116
  81. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +0 -90
  82. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +0 -217
  83. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es.js +0 -55
  84. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es6.js +0 -59
  85. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js +0 -65
  86. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/package.json +0 -33
  87. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/src/estree-walker.js +0 -49
@@ -33,8 +33,8 @@ var keywordRelationalOperator = /^in(stanceof)?$/;
33
33
  // code point above 128.
34
34
  // Generated by `bin/generate-identifier-regex.js`.
35
35
 
36
- var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\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\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\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\u1c80-\u1c88\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-\u312e\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fea\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\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";
37
- var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
36
+ var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\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-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\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-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7b9\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\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";
37
+ var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
38
38
 
39
39
  var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
40
40
  var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
@@ -48,10 +48,10 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
48
48
  // generated by bin/generate-identifier-regex.js
49
49
 
50
50
  // eslint-disable-next-line comma-spacing
51
- var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,257,0,11,39,8,0,22,0,12,39,3,3,55,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,698,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,1,31,6124,20,754,9486,286,82,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541];
51
+ var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,190,52,76,44,33,24,27,35,30,0,12,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,26,230,43,117,63,32,0,257,0,11,39,8,0,22,0,12,39,3,3,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,68,12,0,67,12,65,1,31,6129,15,754,9486,286,82,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541];
52
52
 
53
53
  // eslint-disable-next-line comma-spacing
54
- var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,280,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,19719,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239];
54
+ var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,280,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239];
55
55
 
56
56
  // This has a complexity linear to the value of the code. The
57
57
  // assumption is that looking up astral identifier characters is
@@ -250,8 +250,8 @@ var types = {
250
250
  var lineBreak = /\r\n?|\n|\u2028|\u2029/;
251
251
  var lineBreakG = new RegExp(lineBreak.source, "g");
252
252
 
253
- function isNewLine(code) {
254
- return code === 10 || code === 13 || code === 0x2028 || code === 0x2029
253
+ function isNewLine(code, ecma2019String) {
254
+ return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))
255
255
  }
256
256
 
257
257
  var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
@@ -342,6 +342,9 @@ var defaultOptions = {
342
342
  // When enabled, import/export statements are not constrained to
343
343
  // appearing at the top of the program.
344
344
  allowImportExportEverywhere: false,
345
+ // When enabled, await identifiers are allowed to appear at the top-level scope,
346
+ // but they are still not allowed in non-async functions.
347
+ allowAwaitOutsideFunction: false,
345
348
  // When enabled, hashbang directive in the beginning of file
346
349
  // is allowed and treated as a line comment.
347
350
  allowHashBang: false,
@@ -449,7 +452,7 @@ var Parser = function Parser(options, input, startPos) {
449
452
  if (!options.allowReserved) {
450
453
  for (var v = options.ecmaVersion;; v--)
451
454
  { if (reserved = reservedWords[v]) { break } }
452
- if (options.sourceType == "module") { reserved += " await"; }
455
+ if (options.sourceType === "module") { reserved += " await"; }
453
456
  }
454
457
  this.reservedWords = keywordRegexp(reserved);
455
458
  var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict;
@@ -561,7 +564,7 @@ pp.strictDirective = function(start) {
561
564
  start += skipWhiteSpace.exec(this$1.input)[0].length;
562
565
  var match = literal.exec(this$1.input.slice(start));
563
566
  if (!match) { return false }
564
- if ((match[1] || match[2]) == "use strict") { return true }
567
+ if ((match[1] || match[2]) === "use strict") { return true }
565
568
  start += match[0].length;
566
569
  }
567
570
  };
@@ -622,7 +625,7 @@ pp.semicolon = function() {
622
625
  };
623
626
 
624
627
  pp.afterTrailingComma = function(tokType, notNext) {
625
- if (this.type == tokType) {
628
+ if (this.type === tokType) {
626
629
  if (this.options.onTrailingComma)
627
630
  { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }
628
631
  if (!notNext)
@@ -719,7 +722,7 @@ pp$1.isLet = function() {
719
722
  skipWhiteSpace.lastIndex = this.pos;
720
723
  var skip = skipWhiteSpace.exec(this.input);
721
724
  var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
722
- if (nextCh === 91 || nextCh == 123) { return true } // '{' and '['
725
+ if (nextCh === 91 || nextCh === 123) { return true } // '{' and '['
723
726
  if (isIdentifierStart(nextCh, true)) {
724
727
  var pos = next + 1;
725
728
  while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; }
@@ -741,7 +744,7 @@ pp$1.isAsyncFunction = function() {
741
744
  var next = this.pos + skip[0].length;
742
745
  return !lineBreak.test(this.input.slice(this.pos, next)) &&
743
746
  this.input.slice(next, next + 8) === "function" &&
744
- (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
747
+ (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
745
748
  };
746
749
 
747
750
  // Parse a single statement.
@@ -781,7 +784,7 @@ pp$1.parseStatement = function(declaration, topLevel, exports) {
781
784
  case types._try: return this.parseTryStatement(node)
782
785
  case types._const: case types._var:
783
786
  kind = kind || this.value;
784
- if (!declaration && kind != "var") { this.unexpected(); }
787
+ if (!declaration && kind !== "var") { this.unexpected(); }
785
788
  return this.parseVarStatement(node, kind)
786
789
  case types._while: return this.parseWhileStatement(node)
787
790
  case types._with: return this.parseWithStatement(node)
@@ -819,7 +822,7 @@ pp$1.parseStatement = function(declaration, topLevel, exports) {
819
822
  pp$1.parseBreakContinueStatement = function(node, keyword) {
820
823
  var this$1 = this;
821
824
 
822
- var isBreak = keyword == "break";
825
+ var isBreak = keyword === "break";
823
826
  this.next();
824
827
  if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; }
825
828
  else if (this.type !== types.name) { this.unexpected(); }
@@ -872,7 +875,7 @@ pp$1.parseDoStatement = function(node) {
872
875
 
873
876
  pp$1.parseForStatement = function(node) {
874
877
  this.next();
875
- var awaitAt = (this.options.ecmaVersion >= 9 && this.inAsync && this.eatContextual("await")) ? this.lastTokStart : -1;
878
+ var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual("await")) ? this.lastTokStart : -1;
876
879
  this.labels.push(loopLabel);
877
880
  this.enterLexicalScope();
878
881
  this.expect(types.parenL);
@@ -925,8 +928,8 @@ pp$1.parseIfStatement = function(node) {
925
928
  this.next();
926
929
  node.test = this.parseParenExpression();
927
930
  // allow function declarations in branches, but only in non-strict mode
928
- node.consequent = this.parseStatement(!this.strict && this.type == types._function);
929
- node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type == types._function) : null;
931
+ node.consequent = this.parseStatement(!this.strict && this.type === types._function);
932
+ node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type === types._function) : null;
930
933
  return this.finishNode(node, "IfStatement")
931
934
  };
932
935
 
@@ -959,7 +962,7 @@ pp$1.parseSwitchStatement = function(node) {
959
962
  // adding statements to.
960
963
 
961
964
  var cur;
962
- for (var sawDefault = false; this.type != types.braceR;) {
965
+ for (var sawDefault = false; this.type !== types.braceR;) {
963
966
  if (this$1.type === types._case || this$1.type === types._default) {
964
967
  var isCase = this$1.type === types._case;
965
968
  if (cur) { this$1.finishNode(cur, "SwitchCase"); }
@@ -1006,11 +1009,16 @@ pp$1.parseTryStatement = function(node) {
1006
1009
  if (this.type === types._catch) {
1007
1010
  var clause = this.startNode();
1008
1011
  this.next();
1009
- this.expect(types.parenL);
1010
- clause.param = this.parseBindingAtom();
1011
- this.enterLexicalScope();
1012
- this.checkLVal(clause.param, "let");
1013
- this.expect(types.parenR);
1012
+ if (this.eat(types.parenL)) {
1013
+ clause.param = this.parseBindingAtom();
1014
+ this.enterLexicalScope();
1015
+ this.checkLVal(clause.param, "let");
1016
+ this.expect(types.parenR);
1017
+ } else {
1018
+ if (this.options.ecmaVersion < 10) { this.unexpected(); }
1019
+ clause.param = null;
1020
+ this.enterLexicalScope();
1021
+ }
1014
1022
  clause.body = this.parseBlock(false);
1015
1023
  this.exitLexicalScope();
1016
1024
  node.handler = this.finishNode(clause, "CatchClause");
@@ -1063,7 +1071,7 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
1063
1071
  var kind = this.type.isLoop ? "loop" : this.type === types._switch ? "switch" : null;
1064
1072
  for (var i = this.labels.length - 1; i >= 0; i--) {
1065
1073
  var label$1 = this$1.labels[i];
1066
- if (label$1.statementStart == node.start) {
1074
+ if (label$1.statementStart === node.start) {
1067
1075
  // Update information about previous labels on this node
1068
1076
  label$1.statementStart = this$1.start;
1069
1077
  label$1.kind = kind;
@@ -1071,9 +1079,9 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
1071
1079
  }
1072
1080
  this.labels.push({name: maybeName, kind: kind, statementStart: this.start});
1073
1081
  node.body = this.parseStatement(true);
1074
- if (node.body.type == "ClassDeclaration" ||
1075
- node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
1076
- node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
1082
+ if (node.body.type === "ClassDeclaration" ||
1083
+ node.body.type === "VariableDeclaration" && node.body.kind !== "var" ||
1084
+ node.body.type === "FunctionDeclaration" && (this.strict || node.body.generator || node.body.async))
1077
1085
  { this.raiseRecoverable(node.body.start, "Invalid labeled declaration"); }
1078
1086
  this.labels.pop();
1079
1087
  node.label = expr;
@@ -1133,14 +1141,14 @@ pp$1.parseFor = function(node, init) {
1133
1141
  pp$1.parseForIn = function(node, init) {
1134
1142
  var type = this.type === types._in ? "ForInStatement" : "ForOfStatement";
1135
1143
  this.next();
1136
- if (type == "ForInStatement") {
1144
+ if (type === "ForInStatement") {
1137
1145
  if (init.type === "AssignmentPattern" ||
1138
1146
  (init.type === "VariableDeclaration" && init.declarations[0].init != null &&
1139
1147
  (this.strict || init.declarations[0].id.type !== "Identifier")))
1140
1148
  { this.raise(init.start, "Invalid assignment in for-in loop head"); }
1141
1149
  }
1142
1150
  node.left = init;
1143
- node.right = type == "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign();
1151
+ node.right = type === "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign();
1144
1152
  this.expect(types.parenR);
1145
1153
  this.exitLexicalScope();
1146
1154
  node.body = this.parseStatement(false);
@@ -1162,7 +1170,7 @@ pp$1.parseVar = function(node, isFor, kind) {
1162
1170
  decl.init = this$1.parseMaybeAssign(isFor);
1163
1171
  } else if (kind === "const" && !(this$1.type === types._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) {
1164
1172
  this$1.unexpected();
1165
- } else if (decl.id.type != "Identifier" && !(isFor && (this$1.type === types._in || this$1.isContextual("of")))) {
1173
+ } else if (decl.id.type !== "Identifier" && !(isFor && (this$1.type === types._in || this$1.isContextual("of")))) {
1166
1174
  this$1.raise(this$1.lastTokEnd, "Complex binding patterns require an initialization value");
1167
1175
  } else {
1168
1176
  decl.init = null;
@@ -1189,9 +1197,9 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
1189
1197
  { node.async = !!isAsync; }
1190
1198
 
1191
1199
  if (isStatement) {
1192
- node.id = isStatement === "nullableID" && this.type != types.name ? null : this.parseIdent();
1200
+ node.id = isStatement === "nullableID" && this.type !== types.name ? null : this.parseIdent();
1193
1201
  if (node.id) {
1194
- this.checkLVal(node.id, "var");
1202
+ this.checkLVal(node.id, this.inModule && !this.inFunction ? "let" : "var");
1195
1203
  }
1196
1204
  }
1197
1205
 
@@ -1205,7 +1213,7 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
1205
1213
  this.enterFunctionScope();
1206
1214
 
1207
1215
  if (!isStatement)
1208
- { node.id = this.type == types.name ? this.parseIdent() : null; }
1216
+ { node.id = this.type === types.name ? this.parseIdent() : null; }
1209
1217
 
1210
1218
  this.parseFunctionParams(node);
1211
1219
  this.parseFunctionBody(node, allowExpressionBody);
@@ -1389,28 +1397,28 @@ pp$1.checkPatternExport = function(exports, pat) {
1389
1397
  var this$1 = this;
1390
1398
 
1391
1399
  var type = pat.type;
1392
- if (type == "Identifier")
1400
+ if (type === "Identifier")
1393
1401
  { this.checkExport(exports, pat.name, pat.start); }
1394
- else if (type == "ObjectPattern")
1402
+ else if (type === "ObjectPattern")
1395
1403
  { for (var i = 0, list = pat.properties; i < list.length; i += 1)
1396
1404
  {
1397
1405
  var prop = list[i];
1398
1406
 
1399
1407
  this$1.checkPatternExport(exports, prop);
1400
1408
  } }
1401
- else if (type == "ArrayPattern")
1409
+ else if (type === "ArrayPattern")
1402
1410
  { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {
1403
1411
  var elt = list$1[i$1];
1404
1412
 
1405
1413
  if (elt) { this$1.checkPatternExport(exports, elt); }
1406
1414
  } }
1407
- else if (type == "Property")
1415
+ else if (type === "Property")
1408
1416
  { this.checkPatternExport(exports, pat.value); }
1409
- else if (type == "AssignmentPattern")
1417
+ else if (type === "AssignmentPattern")
1410
1418
  { this.checkPatternExport(exports, pat.left); }
1411
- else if (type == "RestElement")
1419
+ else if (type === "RestElement")
1412
1420
  { this.checkPatternExport(exports, pat.argument); }
1413
- else if (type == "ParenthesizedExpression")
1421
+ else if (type === "ParenthesizedExpression")
1414
1422
  { this.checkPatternExport(exports, pat.expression); }
1415
1423
  };
1416
1424
 
@@ -1577,7 +1585,7 @@ pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {
1577
1585
  break
1578
1586
 
1579
1587
  case "Property":
1580
- // AssignmentProperty has type == "Property"
1588
+ // AssignmentProperty has type === "Property"
1581
1589
  if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); }
1582
1590
  this.toAssignable(node.value, isBinding);
1583
1591
  break
@@ -1767,7 +1775,7 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) {
1767
1775
  break
1768
1776
 
1769
1777
  case "Property":
1770
- // AssignmentProperty has type == "Property"
1778
+ // AssignmentProperty has type === "Property"
1771
1779
  this.checkLVal(expr.value, bindingType, checkClashes);
1772
1780
  break
1773
1781
 
@@ -1912,7 +1920,7 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
1912
1920
  }
1913
1921
 
1914
1922
  var startPos = this.start, startLoc = this.startLoc;
1915
- if (this.type == types.parenL || this.type == types.name)
1923
+ if (this.type === types.parenL || this.type === types.name)
1916
1924
  { this.potentialArrowAt = this.start; }
1917
1925
  var left = this.parseMaybeConditional(noIn, refDestructuringErrors);
1918
1926
  if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }
@@ -1957,7 +1965,7 @@ pp$3.parseExprOps = function(noIn, refDestructuringErrors) {
1957
1965
  var startPos = this.start, startLoc = this.startLoc;
1958
1966
  var expr = this.parseMaybeUnary(refDestructuringErrors, false);
1959
1967
  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }
1960
- return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
1968
+ return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
1961
1969
  };
1962
1970
 
1963
1971
  // Parse binary operators with the operator precedence parsing
@@ -1996,7 +2004,7 @@ pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {
1996
2004
  var this$1 = this;
1997
2005
 
1998
2006
  var startPos = this.start, startLoc = this.startLoc, expr;
1999
- if (this.inAsync && this.isContextual("await")) {
2007
+ if (this.isContextual("await") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {
2000
2008
  expr = this.parseAwait();
2001
2009
  sawUnary = true;
2002
2010
  } else if (this.type.prefix) {
@@ -2051,7 +2059,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
2051
2059
  var this$1 = this;
2052
2060
 
2053
2061
  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
2054
- this.lastTokEnd == base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
2062
+ this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
2055
2063
  for (var computed = (void 0);;) {
2056
2064
  if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {
2057
2065
  var node = this$1.startNodeAt(startPos, startLoc);
@@ -2096,7 +2104,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
2096
2104
  // or `{}`.
2097
2105
 
2098
2106
  pp$3.parseExprAtom = function(refDestructuringErrors) {
2099
- var node, canBeArrow = this.potentialArrowAt == this.start;
2107
+ var node, canBeArrow = this.potentialArrowAt === this.start;
2100
2108
  switch (this.type) {
2101
2109
  case types._super:
2102
2110
  if (!this.inFunction)
@@ -2441,7 +2449,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
2441
2449
  } else if (!isPattern && !containsEsc &&
2442
2450
  this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" &&
2443
2451
  (prop.key.name === "get" || prop.key.name === "set") &&
2444
- (this.type != types.comma && this.type != types.braceR)) {
2452
+ (this.type !== types.comma && this.type !== types.braceR)) {
2445
2453
  if (isGenerator || isAsync) { this.unexpected(); }
2446
2454
  prop.kind = prop.key.name;
2447
2455
  this.parsePropertyName(prop);
@@ -2670,7 +2678,7 @@ pp$3.checkUnreserved = function(ref) {
2670
2678
  if (this.isKeyword(name))
2671
2679
  { this.raise(start, ("Unexpected keyword '" + name + "'")); }
2672
2680
  if (this.options.ecmaVersion < 6 &&
2673
- this.input.slice(start, end).indexOf("\\") != -1) { return }
2681
+ this.input.slice(start, end).indexOf("\\") !== -1) { return }
2674
2682
  var re = this.strict ? this.reservedWordsStrict : this.reservedWords;
2675
2683
  if (re.test(name)) {
2676
2684
  if (!this.inAsync && name === "await")
@@ -2685,7 +2693,7 @@ pp$3.checkUnreserved = function(ref) {
2685
2693
 
2686
2694
  pp$3.parseIdent = function(liberal, isBinding) {
2687
2695
  var node = this.startNode();
2688
- if (liberal && this.options.allowReserved == "never") { liberal = false; }
2696
+ if (liberal && this.options.allowReserved === "never") { liberal = false; }
2689
2697
  if (this.type === types.name) {
2690
2698
  node.name = this.value;
2691
2699
  } else if (this.type.keyword) {
@@ -2715,7 +2723,7 @@ pp$3.parseYield = function() {
2715
2723
 
2716
2724
  var node = this.startNode();
2717
2725
  this.next();
2718
- if (this.type == types.semi || this.canInsertSemicolon() || (this.type != types.star && !this.type.startsExpr)) {
2726
+ if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) {
2719
2727
  node.delegate = false;
2720
2728
  node.argument = null;
2721
2729
  } else {
@@ -2922,13 +2930,13 @@ pp$7.braceIsBlock = function(prevType) {
2922
2930
  // The check for `tt.name && exprAllowed` detects whether we are
2923
2931
  // after a `yield` or `of` construct. See the `updateContext` for
2924
2932
  // `tt.name`.
2925
- if (prevType === types._return || prevType == types.name && this.exprAllowed)
2933
+ if (prevType === types._return || prevType === types.name && this.exprAllowed)
2926
2934
  { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }
2927
- if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType == types.arrow)
2935
+ if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow)
2928
2936
  { return true }
2929
- if (prevType == types.braceL)
2937
+ if (prevType === types.braceL)
2930
2938
  { return parent === types$1.b_stat }
2931
- if (prevType == types._var || prevType == types.name)
2939
+ if (prevType === types._var || prevType === types.name)
2932
2940
  { return false }
2933
2941
  return !this.exprAllowed
2934
2942
  };
@@ -2946,7 +2954,7 @@ pp$7.inGeneratorContext = function() {
2946
2954
 
2947
2955
  pp$7.updateContext = function(prevType) {
2948
2956
  var update, type = this.type;
2949
- if (type.keyword && prevType == types.dot)
2957
+ if (type.keyword && prevType === types.dot)
2950
2958
  { this.exprAllowed = false; }
2951
2959
  else if (update = type.updateContext)
2952
2960
  { update.call(this, prevType); }
@@ -2957,7 +2965,7 @@ pp$7.updateContext = function(prevType) {
2957
2965
  // Token-specific context update code
2958
2966
 
2959
2967
  types.parenR.updateContext = types.braceR.updateContext = function() {
2960
- if (this.context.length == 1) {
2968
+ if (this.context.length === 1) {
2961
2969
  this.exprAllowed = true;
2962
2970
  return
2963
2971
  }
@@ -3006,7 +3014,7 @@ types.backQuote.updateContext = function() {
3006
3014
  };
3007
3015
 
3008
3016
  types.star.updateContext = function(prevType) {
3009
- if (prevType == types._function) {
3017
+ if (prevType === types._function) {
3010
3018
  var index = this.context.length - 1;
3011
3019
  if (this.context[index] === types$1.f_expr)
3012
3020
  { this.context[index] = types$1.f_expr_gen; }
@@ -3019,8 +3027,8 @@ types.star.updateContext = function(prevType) {
3019
3027
  types.name.updateContext = function(prevType) {
3020
3028
  var allowed = false;
3021
3029
  if (this.options.ecmaVersion >= 6) {
3022
- if (this.value == "of" && !this.exprAllowed ||
3023
- this.value == "yield" && this.inGeneratorContext())
3030
+ if (this.value === "of" && !this.exprAllowed ||
3031
+ this.value === "yield" && this.inGeneratorContext())
3024
3032
  { allowed = true; }
3025
3033
  }
3026
3034
  this.exprAllowed = allowed;
@@ -3589,7 +3597,7 @@ pp$9.validateRegExpFlags = function(state) {
3589
3597
 
3590
3598
  for (var i = 0; i < flags.length; i++) {
3591
3599
  var flag = flags.charAt(i);
3592
- if (validFlags.indexOf(flag) == -1) {
3600
+ if (validFlags.indexOf(flag) === -1) {
3593
3601
  this$1.raise(state.start, "Invalid regular expression flag");
3594
3602
  }
3595
3603
  if (flags.indexOf(flag, i + 1) > -1) {
@@ -4755,7 +4763,7 @@ pp$8.readToken_mult_modulo_exp = function(code) { // '%*'
4755
4763
  var tokentype = code === 42 ? types.star : types.modulo;
4756
4764
 
4757
4765
  // exponentiation operator ** and **=
4758
- if (this.options.ecmaVersion >= 7 && code == 42 && next === 42) {
4766
+ if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {
4759
4767
  ++size;
4760
4768
  tokentype = types.starstar;
4761
4769
  next = this.input.charCodeAt(this.pos + 2);
@@ -4781,7 +4789,7 @@ pp$8.readToken_caret = function() { // '^'
4781
4789
  pp$8.readToken_plus_min = function(code) { // '+-'
4782
4790
  var next = this.input.charCodeAt(this.pos + 1);
4783
4791
  if (next === code) {
4784
- if (next == 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 62 &&
4792
+ if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&
4785
4793
  (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {
4786
4794
  // A `-->` line comment
4787
4795
  this.skipLineComment(3);
@@ -4802,8 +4810,8 @@ pp$8.readToken_lt_gt = function(code) { // '<>'
4802
4810
  if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) }
4803
4811
  return this.finishOp(types.bitShift, size)
4804
4812
  }
4805
- if (next == 33 && code == 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 45 &&
4806
- this.input.charCodeAt(this.pos + 3) == 45) {
4813
+ if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&
4814
+ this.input.charCodeAt(this.pos + 3) === 45) {
4807
4815
  // `<!--`, an XML-style comment that should be interpreted as a line comment
4808
4816
  this.skipLineComment(4);
4809
4817
  this.skipSpace();
@@ -5037,7 +5045,7 @@ pp$8.readString = function(quote) {
5037
5045
  out += this$1.readEscapedChar(false);
5038
5046
  chunkStart = this$1.pos;
5039
5047
  } else {
5040
- if (isNewLine(ch)) { this$1.raise(this$1.start, "Unterminated string constant"); }
5048
+ if (isNewLine(ch, this$1.options.ecmaVersion >= 10)) { this$1.raise(this$1.start, "Unterminated string constant"); }
5041
5049
  ++this$1.pos;
5042
5050
  }
5043
5051
  }
@@ -5173,7 +5181,7 @@ pp$8.readEscapedChar = function(inTemplate) {
5173
5181
  }
5174
5182
  this.pos += octalStr.length - 1;
5175
5183
  ch = this.input.charCodeAt(this.pos);
5176
- if ((octalStr !== "0" || ch == 56 || ch == 57) && (this.strict || inTemplate)) {
5184
+ if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {
5177
5185
  this.invalidStringToken(
5178
5186
  this.pos - 1 - octalStr.length,
5179
5187
  inTemplate
@@ -5216,7 +5224,7 @@ pp$8.readWord1 = function() {
5216
5224
  this$1.containsEsc = true;
5217
5225
  word += this$1.input.slice(chunkStart, this$1.pos);
5218
5226
  var escStart = this$1.pos;
5219
- if (this$1.input.charCodeAt(++this$1.pos) != 117) // "u"
5227
+ if (this$1.input.charCodeAt(++this$1.pos) !== 117) // "u"
5220
5228
  { this$1.invalidStringToken(this$1.pos, "Expecting Unicode escape sequence \\uXXXX"); }
5221
5229
  ++this$1.pos;
5222
5230
  var esc = this$1.readCodePoint();
@@ -5266,7 +5274,7 @@ pp$8.readWord = function() {
5266
5274
  // [dammit]: acorn_loose.js
5267
5275
  // [walk]: util/walk.js
5268
5276
 
5269
- var version = "5.5.3";
5277
+ var version = "5.7.2";
5270
5278
 
5271
5279
  // The main exported interface (under `self.acorn` when in the
5272
5280
  // browser) is a `parse` function that takes a code string and