jass 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 629e1c61462902cabd2974f9723a17103f2fcc808813acdf9d052df264040196
4
- data.tar.gz: e23194bf067a15162f0a421d86323b685225beeb461b5d7c762b9ea258c790ce
3
+ metadata.gz: 324ddf7781bbfba9401230e3b1b499c0c81b98a9862331235dfa5e32c0c83a15
4
+ data.tar.gz: 0b134300473cf8d37fe3075814c0618ce29a620d6a7e26aa47f92597a4c29695
5
5
  SHA512:
6
- metadata.gz: 82630076d46e54b547ebac6549840d4a29bb54831b528ffb23aed13dd359548e0c7672a09f044ffabf09af6c7f5c7107b3121eed7e6c1270a695097417e9a5a7
7
- data.tar.gz: 2b31b59f675ac7b88e794db22dfefab2f119818a408510dd850f7e5e2d4de1da0eb6c734c77c84d368746af0f4ac8886f3b11aa7f8351c9b6992fc01e65db56d
6
+ metadata.gz: 4a752c5d6699ecf8a63b4febe8427216a4f36e85be3b85b752a796a372ff2f117678380536e1fc4e57f29da2ad5bec2e62f458ed93228d660642c1b8acd9f88d
7
+ data.tar.gz: a8fe1d8f013ae8dbf0a1a842a9adbfc72841259a430918f6e1066921b809c097d4f11e24acc23361aa975d76c3a08f392341066f8d30ee9abad4b69a71a029e5
data/README.md CHANGED
@@ -33,7 +33,7 @@ Use `yarn` to install your custom npm dependencies into `vendor/node_modules`.
33
33
  Create your bundle entry points as `.jass` files under `app/assets/javascripts` in regular
34
34
  ES6 syntax (`import`, `async/await`).
35
35
 
36
- External dependencies can be declared to Sprockets using the `global` comment:
36
+ External dependencies can be declared to Rollup using the `global` comment:
37
37
 
38
38
  ```js
39
39
  // application.jass
@@ -18,6 +18,11 @@ module Jass
18
18
  @compiler = nil
19
19
  end
20
20
 
21
+ def append_plugin(package, name, arguments = nil, root = nil)
22
+ Compiler.append_plugin(package, name, arguments, root)
23
+ @compiler = nil
24
+ end
25
+
21
26
  def compiler
22
27
  @compiler ||= Jass::Compiler.new
23
28
  end
@@ -94,6 +94,11 @@ module Jass
94
94
  dependency name => package
95
95
  end
96
96
 
97
+ def append_plugin(package, name, arguments = nil, root = nil)
98
+ plugins.push(Plugin.new(name, arguments, root))
99
+ dependency name => package
100
+ end
101
+
97
102
  def node_paths
98
103
  ([Jass.modules_root, Jass.vendor_modules_root] + plugins.map(&:root)).compact.map { |p| File.absolute_path(File.join(p, 'node_modules')) }
99
104
  end
@@ -7,7 +7,8 @@ module Jass
7
7
  end
8
8
 
9
9
  def to_js
10
- "__plugins__.push(#{name}(#{arguments}));\n"
10
+ args = arguments.respond_to?(:call) ? arguments.call : arguments
11
+ "__plugins__.push(#{name}(#{args}));\n"
11
12
  end
12
13
  end
13
14
  end
@@ -1,3 +1,3 @@
1
1
  module Jass
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.3'
3
3
  end
@@ -196,7 +196,8 @@ interface BaseDeclaration extends BaseStatement { }
196
196
 
197
197
  export interface FunctionDeclaration extends BaseFunction, BaseDeclaration {
198
198
  type: "FunctionDeclaration";
199
- id: Identifier;
199
+ /** It is null when a function declaration is a part of the `export default function` statement */
200
+ id: Identifier | null;
200
201
  body: BlockStatement;
201
202
  }
202
203
 
@@ -473,7 +474,8 @@ export interface MethodDefinition extends BaseNode {
473
474
 
474
475
  export interface ClassDeclaration extends BaseClass, BaseDeclaration {
475
476
  type: "ClassDeclaration";
476
- id: Identifier;
477
+ /** It is null when a class declaration is a part of the `export default class` statement */
478
+ id: Identifier | null;
477
479
  }
478
480
 
479
481
  export interface ClassExpression extends BaseClass, BaseExpression {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/estree",
3
- "version": "0.0.38",
3
+ "version": "0.0.39",
4
4
  "description": "TypeScript definitions for ESTree AST specification",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -17,6 +17,6 @@
17
17
  },
18
18
  "scripts": {},
19
19
  "dependencies": {},
20
- "typesPublisherContentHash": "19879f4eaa24d649d1de20d95bf747d91637d037470d47442d96dad57ec9a424",
20
+ "typesPublisherContentHash": "427ba878ebb5570e15aab870f708720d146a1c4b272e4a9d9990db4d1d033170",
21
21
  "typeScriptVersion": "2.0"
22
22
  }
@@ -13,7 +13,7 @@ var tokenize = false;
13
13
  var options = {};
14
14
 
15
15
  function help(status) {
16
- var print = (status == 0) ? console.log : console.error;
16
+ var print = (status === 0) ? console.log : console.error;
17
17
  print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|...|--ecma2015|--ecma2016|--ecma2017|--ecma2018|...]");
18
18
  print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]");
19
19
  process.exit(status);
@@ -21,15 +21,15 @@ function help(status) {
21
21
 
22
22
  for (var i = 2; i < process.argv.length; ++i) {
23
23
  var arg = process.argv[i];
24
- if ((arg == "-" || arg[0] != "-") && !infile) { infile = arg; }
25
- else if (arg == "--" && !infile && i + 2 == process.argv.length) { forceFile = infile = process.argv[++i]; }
26
- else if (arg == "--locations") { options.locations = true; }
27
- else if (arg == "--allow-hash-bang") { options.allowHashBang = true; }
28
- else if (arg == "--silent") { silent = true; }
29
- else if (arg == "--compact") { compact = true; }
30
- else if (arg == "--help") { help(0); }
31
- else if (arg == "--tokenize") { tokenize = true; }
32
- else if (arg == "--module") { options.sourceType = "module"; }
24
+ if ((arg === "-" || arg[0] !== "-") && !infile) { infile = arg; }
25
+ else if (arg === "--" && !infile && i + 2 === process.argv.length) { forceFile = infile = process.argv[++i]; }
26
+ else if (arg === "--locations") { options.locations = true; }
27
+ else if (arg === "--allow-hash-bang") { options.allowHashBang = true; }
28
+ else if (arg === "--silent") { silent = true; }
29
+ else if (arg === "--compact") { compact = true; }
30
+ else if (arg === "--help") { help(0); }
31
+ else if (arg === "--tokenize") { tokenize = true; }
32
+ else if (arg === "--module") { options.sourceType = "module"; }
33
33
  else {
34
34
  var match = arg.match(/^--ecma(\d+)$/);
35
35
  if (match)
@@ -50,7 +50,7 @@ function run(code) {
50
50
  do {
51
51
  token = tokenizer$$1.getToken();
52
52
  result.push(token);
53
- } while (token.type != acorn.tokTypes.eof)
53
+ } while (token.type !== acorn.tokTypes.eof)
54
54
  }
55
55
  } catch (e) {
56
56
  console.error(e.message);
@@ -59,7 +59,7 @@ function run(code) {
59
59
  if (!silent) { console.log(JSON.stringify(result, null, compact ? null : 2)); }
60
60
  }
61
61
 
62
- if (forceFile || infile && infile != "-") {
62
+ if (forceFile || infile && infile !== "-") {
63
63
  run(fs.readFileSync(infile, "utf8"));
64
64
  } else {
65
65
  var code = "";
@@ -8,12 +8,11 @@ const unsupportedFeatures = [
8
8
  "class-fields",
9
9
  "class-fields-private",
10
10
  "class-fields-public",
11
- "numeric-separator-literal",
12
- "optional-catch-binding"
11
+ "numeric-separator-literal"
13
12
  ];
14
13
 
15
14
  run(
16
- (content, {sourceType}) => parse(content, {sourceType, ecmaVersion: 9}),
15
+ (content, {sourceType}) => parse(content, {sourceType, ecmaVersion: 10}),
17
16
  {
18
17
  testsDirectory: path.dirname(require.resolve("test262/package.json")),
19
18
  skip: test => (test.attrs.features && unsupportedFeatures.some(f => test.attrs.features.includes(f))),
@@ -212,10 +212,6 @@ language/module-code/early-export-global.js (default)
212
212
  language/module-code/early-export-global.js (strict mode)
213
213
  language/module-code/early-export-unresolvable.js (default)
214
214
  language/module-code/early-export-unresolvable.js (strict mode)
215
- language/module-code/parse-err-hoist-lex-fun.js (default)
216
- language/module-code/parse-err-hoist-lex-fun.js (strict mode)
217
- language/module-code/parse-err-hoist-lex-gen.js (default)
218
- language/module-code/parse-err-hoist-lex-gen.js (strict mode)
219
215
  language/statements/async-function/early-errors-declaration-body-contains-super-call.js (default)
220
216
  language/statements/async-function/early-errors-declaration-body-contains-super-call.js (strict mode)
221
217
  language/statements/async-function/early-errors-declaration-body-contains-super-property.js (default)
@@ -316,7 +312,6 @@ language/statements/if/labelled-fn-stmt-lone.js (default)
316
312
  language/statements/if/labelled-fn-stmt-second.js (default)
317
313
  language/statements/if/let-block-with-newline.js (default)
318
314
  language/statements/if/let-identifier-with-newline.js (default)
319
- language/statements/labeled/decl-async-function.js (default)
320
315
  language/statements/labeled/let-block-with-newline.js (default)
321
316
  language/statements/labeled/let-identifier-with-newline.js (default)
322
317
  language/statements/let/syntax/identifier-let-disallowed-as-boundname.js (default)
@@ -27,8 +27,8 @@ var keywordRelationalOperator = /^in(stanceof)?$/;
27
27
  // code point above 128.
28
28
  // Generated by `bin/generate-identifier-regex.js`.
29
29
 
30
- 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";
31
- 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";
30
+ 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";
31
+ 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";
32
32
 
33
33
  var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
34
34
  var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
@@ -42,10 +42,10 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
42
42
  // generated by bin/generate-identifier-regex.js
43
43
 
44
44
  // eslint-disable-next-line comma-spacing
45
- 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];
45
+ 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];
46
46
 
47
47
  // eslint-disable-next-line comma-spacing
48
- 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];
48
+ 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];
49
49
 
50
50
  // This has a complexity linear to the value of the code. The
51
51
  // assumption is that looking up astral identifier characters is
@@ -244,8 +244,8 @@ var types = {
244
244
  var lineBreak = /\r\n?|\n|\u2028|\u2029/;
245
245
  var lineBreakG = new RegExp(lineBreak.source, "g");
246
246
 
247
- function isNewLine(code) {
248
- return code === 10 || code === 13 || code === 0x2028 || code === 0x2029
247
+ function isNewLine(code, ecma2019String) {
248
+ return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))
249
249
  }
250
250
 
251
251
  var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
@@ -336,6 +336,9 @@ var defaultOptions = {
336
336
  // When enabled, import/export statements are not constrained to
337
337
  // appearing at the top of the program.
338
338
  allowImportExportEverywhere: false,
339
+ // When enabled, await identifiers are allowed to appear at the top-level scope,
340
+ // but they are still not allowed in non-async functions.
341
+ allowAwaitOutsideFunction: false,
339
342
  // When enabled, hashbang directive in the beginning of file
340
343
  // is allowed and treated as a line comment.
341
344
  allowHashBang: false,
@@ -443,7 +446,7 @@ var Parser = function Parser(options, input, startPos) {
443
446
  if (!options.allowReserved) {
444
447
  for (var v = options.ecmaVersion;; v--)
445
448
  { if (reserved = reservedWords[v]) { break } }
446
- if (options.sourceType == "module") { reserved += " await"; }
449
+ if (options.sourceType === "module") { reserved += " await"; }
447
450
  }
448
451
  this.reservedWords = keywordRegexp(reserved);
449
452
  var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict;
@@ -555,7 +558,7 @@ pp.strictDirective = function(start) {
555
558
  start += skipWhiteSpace.exec(this$1.input)[0].length;
556
559
  var match = literal.exec(this$1.input.slice(start));
557
560
  if (!match) { return false }
558
- if ((match[1] || match[2]) == "use strict") { return true }
561
+ if ((match[1] || match[2]) === "use strict") { return true }
559
562
  start += match[0].length;
560
563
  }
561
564
  };
@@ -616,7 +619,7 @@ pp.semicolon = function() {
616
619
  };
617
620
 
618
621
  pp.afterTrailingComma = function(tokType, notNext) {
619
- if (this.type == tokType) {
622
+ if (this.type === tokType) {
620
623
  if (this.options.onTrailingComma)
621
624
  { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }
622
625
  if (!notNext)
@@ -713,7 +716,7 @@ pp$1.isLet = function() {
713
716
  skipWhiteSpace.lastIndex = this.pos;
714
717
  var skip = skipWhiteSpace.exec(this.input);
715
718
  var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);
716
- if (nextCh === 91 || nextCh == 123) { return true } // '{' and '['
719
+ if (nextCh === 91 || nextCh === 123) { return true } // '{' and '['
717
720
  if (isIdentifierStart(nextCh, true)) {
718
721
  var pos = next + 1;
719
722
  while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; }
@@ -735,7 +738,7 @@ pp$1.isAsyncFunction = function() {
735
738
  var next = this.pos + skip[0].length;
736
739
  return !lineBreak.test(this.input.slice(this.pos, next)) &&
737
740
  this.input.slice(next, next + 8) === "function" &&
738
- (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
741
+ (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
739
742
  };
740
743
 
741
744
  // Parse a single statement.
@@ -775,7 +778,7 @@ pp$1.parseStatement = function(declaration, topLevel, exports) {
775
778
  case types._try: return this.parseTryStatement(node)
776
779
  case types._const: case types._var:
777
780
  kind = kind || this.value;
778
- if (!declaration && kind != "var") { this.unexpected(); }
781
+ if (!declaration && kind !== "var") { this.unexpected(); }
779
782
  return this.parseVarStatement(node, kind)
780
783
  case types._while: return this.parseWhileStatement(node)
781
784
  case types._with: return this.parseWithStatement(node)
@@ -813,7 +816,7 @@ pp$1.parseStatement = function(declaration, topLevel, exports) {
813
816
  pp$1.parseBreakContinueStatement = function(node, keyword) {
814
817
  var this$1 = this;
815
818
 
816
- var isBreak = keyword == "break";
819
+ var isBreak = keyword === "break";
817
820
  this.next();
818
821
  if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; }
819
822
  else if (this.type !== types.name) { this.unexpected(); }
@@ -866,7 +869,7 @@ pp$1.parseDoStatement = function(node) {
866
869
 
867
870
  pp$1.parseForStatement = function(node) {
868
871
  this.next();
869
- var awaitAt = (this.options.ecmaVersion >= 9 && this.inAsync && this.eatContextual("await")) ? this.lastTokStart : -1;
872
+ var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual("await")) ? this.lastTokStart : -1;
870
873
  this.labels.push(loopLabel);
871
874
  this.enterLexicalScope();
872
875
  this.expect(types.parenL);
@@ -919,8 +922,8 @@ pp$1.parseIfStatement = function(node) {
919
922
  this.next();
920
923
  node.test = this.parseParenExpression();
921
924
  // allow function declarations in branches, but only in non-strict mode
922
- node.consequent = this.parseStatement(!this.strict && this.type == types._function);
923
- node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type == types._function) : null;
925
+ node.consequent = this.parseStatement(!this.strict && this.type === types._function);
926
+ node.alternate = this.eat(types._else) ? this.parseStatement(!this.strict && this.type === types._function) : null;
924
927
  return this.finishNode(node, "IfStatement")
925
928
  };
926
929
 
@@ -953,7 +956,7 @@ pp$1.parseSwitchStatement = function(node) {
953
956
  // adding statements to.
954
957
 
955
958
  var cur;
956
- for (var sawDefault = false; this.type != types.braceR;) {
959
+ for (var sawDefault = false; this.type !== types.braceR;) {
957
960
  if (this$1.type === types._case || this$1.type === types._default) {
958
961
  var isCase = this$1.type === types._case;
959
962
  if (cur) { this$1.finishNode(cur, "SwitchCase"); }
@@ -1000,11 +1003,16 @@ pp$1.parseTryStatement = function(node) {
1000
1003
  if (this.type === types._catch) {
1001
1004
  var clause = this.startNode();
1002
1005
  this.next();
1003
- this.expect(types.parenL);
1004
- clause.param = this.parseBindingAtom();
1005
- this.enterLexicalScope();
1006
- this.checkLVal(clause.param, "let");
1007
- this.expect(types.parenR);
1006
+ if (this.eat(types.parenL)) {
1007
+ clause.param = this.parseBindingAtom();
1008
+ this.enterLexicalScope();
1009
+ this.checkLVal(clause.param, "let");
1010
+ this.expect(types.parenR);
1011
+ } else {
1012
+ if (this.options.ecmaVersion < 10) { this.unexpected(); }
1013
+ clause.param = null;
1014
+ this.enterLexicalScope();
1015
+ }
1008
1016
  clause.body = this.parseBlock(false);
1009
1017
  this.exitLexicalScope();
1010
1018
  node.handler = this.finishNode(clause, "CatchClause");
@@ -1057,7 +1065,7 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
1057
1065
  var kind = this.type.isLoop ? "loop" : this.type === types._switch ? "switch" : null;
1058
1066
  for (var i = this.labels.length - 1; i >= 0; i--) {
1059
1067
  var label$1 = this$1.labels[i];
1060
- if (label$1.statementStart == node.start) {
1068
+ if (label$1.statementStart === node.start) {
1061
1069
  // Update information about previous labels on this node
1062
1070
  label$1.statementStart = this$1.start;
1063
1071
  label$1.kind = kind;
@@ -1065,9 +1073,9 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
1065
1073
  }
1066
1074
  this.labels.push({name: maybeName, kind: kind, statementStart: this.start});
1067
1075
  node.body = this.parseStatement(true);
1068
- if (node.body.type == "ClassDeclaration" ||
1069
- node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
1070
- node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
1076
+ if (node.body.type === "ClassDeclaration" ||
1077
+ node.body.type === "VariableDeclaration" && node.body.kind !== "var" ||
1078
+ node.body.type === "FunctionDeclaration" && (this.strict || node.body.generator || node.body.async))
1071
1079
  { this.raiseRecoverable(node.body.start, "Invalid labeled declaration"); }
1072
1080
  this.labels.pop();
1073
1081
  node.label = expr;
@@ -1127,14 +1135,14 @@ pp$1.parseFor = function(node, init) {
1127
1135
  pp$1.parseForIn = function(node, init) {
1128
1136
  var type = this.type === types._in ? "ForInStatement" : "ForOfStatement";
1129
1137
  this.next();
1130
- if (type == "ForInStatement") {
1138
+ if (type === "ForInStatement") {
1131
1139
  if (init.type === "AssignmentPattern" ||
1132
1140
  (init.type === "VariableDeclaration" && init.declarations[0].init != null &&
1133
1141
  (this.strict || init.declarations[0].id.type !== "Identifier")))
1134
1142
  { this.raise(init.start, "Invalid assignment in for-in loop head"); }
1135
1143
  }
1136
1144
  node.left = init;
1137
- node.right = type == "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign();
1145
+ node.right = type === "ForInStatement" ? this.parseExpression() : this.parseMaybeAssign();
1138
1146
  this.expect(types.parenR);
1139
1147
  this.exitLexicalScope();
1140
1148
  node.body = this.parseStatement(false);
@@ -1156,7 +1164,7 @@ pp$1.parseVar = function(node, isFor, kind) {
1156
1164
  decl.init = this$1.parseMaybeAssign(isFor);
1157
1165
  } else if (kind === "const" && !(this$1.type === types._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) {
1158
1166
  this$1.unexpected();
1159
- } else if (decl.id.type != "Identifier" && !(isFor && (this$1.type === types._in || this$1.isContextual("of")))) {
1167
+ } else if (decl.id.type !== "Identifier" && !(isFor && (this$1.type === types._in || this$1.isContextual("of")))) {
1160
1168
  this$1.raise(this$1.lastTokEnd, "Complex binding patterns require an initialization value");
1161
1169
  } else {
1162
1170
  decl.init = null;
@@ -1183,9 +1191,9 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
1183
1191
  { node.async = !!isAsync; }
1184
1192
 
1185
1193
  if (isStatement) {
1186
- node.id = isStatement === "nullableID" && this.type != types.name ? null : this.parseIdent();
1194
+ node.id = isStatement === "nullableID" && this.type !== types.name ? null : this.parseIdent();
1187
1195
  if (node.id) {
1188
- this.checkLVal(node.id, "var");
1196
+ this.checkLVal(node.id, this.inModule && !this.inFunction ? "let" : "var");
1189
1197
  }
1190
1198
  }
1191
1199
 
@@ -1199,7 +1207,7 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
1199
1207
  this.enterFunctionScope();
1200
1208
 
1201
1209
  if (!isStatement)
1202
- { node.id = this.type == types.name ? this.parseIdent() : null; }
1210
+ { node.id = this.type === types.name ? this.parseIdent() : null; }
1203
1211
 
1204
1212
  this.parseFunctionParams(node);
1205
1213
  this.parseFunctionBody(node, allowExpressionBody);
@@ -1383,28 +1391,28 @@ pp$1.checkPatternExport = function(exports, pat) {
1383
1391
  var this$1 = this;
1384
1392
 
1385
1393
  var type = pat.type;
1386
- if (type == "Identifier")
1394
+ if (type === "Identifier")
1387
1395
  { this.checkExport(exports, pat.name, pat.start); }
1388
- else if (type == "ObjectPattern")
1396
+ else if (type === "ObjectPattern")
1389
1397
  { for (var i = 0, list = pat.properties; i < list.length; i += 1)
1390
1398
  {
1391
1399
  var prop = list[i];
1392
1400
 
1393
1401
  this$1.checkPatternExport(exports, prop);
1394
1402
  } }
1395
- else if (type == "ArrayPattern")
1403
+ else if (type === "ArrayPattern")
1396
1404
  { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {
1397
1405
  var elt = list$1[i$1];
1398
1406
 
1399
1407
  if (elt) { this$1.checkPatternExport(exports, elt); }
1400
1408
  } }
1401
- else if (type == "Property")
1409
+ else if (type === "Property")
1402
1410
  { this.checkPatternExport(exports, pat.value); }
1403
- else if (type == "AssignmentPattern")
1411
+ else if (type === "AssignmentPattern")
1404
1412
  { this.checkPatternExport(exports, pat.left); }
1405
- else if (type == "RestElement")
1413
+ else if (type === "RestElement")
1406
1414
  { this.checkPatternExport(exports, pat.argument); }
1407
- else if (type == "ParenthesizedExpression")
1415
+ else if (type === "ParenthesizedExpression")
1408
1416
  { this.checkPatternExport(exports, pat.expression); }
1409
1417
  };
1410
1418
 
@@ -1571,7 +1579,7 @@ pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {
1571
1579
  break
1572
1580
 
1573
1581
  case "Property":
1574
- // AssignmentProperty has type == "Property"
1582
+ // AssignmentProperty has type === "Property"
1575
1583
  if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); }
1576
1584
  this.toAssignable(node.value, isBinding);
1577
1585
  break
@@ -1761,7 +1769,7 @@ pp$2.checkLVal = function(expr, bindingType, checkClashes) {
1761
1769
  break
1762
1770
 
1763
1771
  case "Property":
1764
- // AssignmentProperty has type == "Property"
1772
+ // AssignmentProperty has type === "Property"
1765
1773
  this.checkLVal(expr.value, bindingType, checkClashes);
1766
1774
  break
1767
1775
 
@@ -1906,7 +1914,7 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
1906
1914
  }
1907
1915
 
1908
1916
  var startPos = this.start, startLoc = this.startLoc;
1909
- if (this.type == types.parenL || this.type == types.name)
1917
+ if (this.type === types.parenL || this.type === types.name)
1910
1918
  { this.potentialArrowAt = this.start; }
1911
1919
  var left = this.parseMaybeConditional(noIn, refDestructuringErrors);
1912
1920
  if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }
@@ -1951,7 +1959,7 @@ pp$3.parseExprOps = function(noIn, refDestructuringErrors) {
1951
1959
  var startPos = this.start, startLoc = this.startLoc;
1952
1960
  var expr = this.parseMaybeUnary(refDestructuringErrors, false);
1953
1961
  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }
1954
- return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
1962
+ return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
1955
1963
  };
1956
1964
 
1957
1965
  // Parse binary operators with the operator precedence parsing
@@ -1990,7 +1998,7 @@ pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {
1990
1998
  var this$1 = this;
1991
1999
 
1992
2000
  var startPos = this.start, startLoc = this.startLoc, expr;
1993
- if (this.inAsync && this.isContextual("await")) {
2001
+ if (this.isContextual("await") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {
1994
2002
  expr = this.parseAwait();
1995
2003
  sawUnary = true;
1996
2004
  } else if (this.type.prefix) {
@@ -2045,7 +2053,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
2045
2053
  var this$1 = this;
2046
2054
 
2047
2055
  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
2048
- this.lastTokEnd == base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
2056
+ this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
2049
2057
  for (var computed = (void 0);;) {
2050
2058
  if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {
2051
2059
  var node = this$1.startNodeAt(startPos, startLoc);
@@ -2090,7 +2098,7 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
2090
2098
  // or `{}`.
2091
2099
 
2092
2100
  pp$3.parseExprAtom = function(refDestructuringErrors) {
2093
- var node, canBeArrow = this.potentialArrowAt == this.start;
2101
+ var node, canBeArrow = this.potentialArrowAt === this.start;
2094
2102
  switch (this.type) {
2095
2103
  case types._super:
2096
2104
  if (!this.inFunction)
@@ -2435,7 +2443,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
2435
2443
  } else if (!isPattern && !containsEsc &&
2436
2444
  this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" &&
2437
2445
  (prop.key.name === "get" || prop.key.name === "set") &&
2438
- (this.type != types.comma && this.type != types.braceR)) {
2446
+ (this.type !== types.comma && this.type !== types.braceR)) {
2439
2447
  if (isGenerator || isAsync) { this.unexpected(); }
2440
2448
  prop.kind = prop.key.name;
2441
2449
  this.parsePropertyName(prop);
@@ -2664,7 +2672,7 @@ pp$3.checkUnreserved = function(ref) {
2664
2672
  if (this.isKeyword(name))
2665
2673
  { this.raise(start, ("Unexpected keyword '" + name + "'")); }
2666
2674
  if (this.options.ecmaVersion < 6 &&
2667
- this.input.slice(start, end).indexOf("\\") != -1) { return }
2675
+ this.input.slice(start, end).indexOf("\\") !== -1) { return }
2668
2676
  var re = this.strict ? this.reservedWordsStrict : this.reservedWords;
2669
2677
  if (re.test(name)) {
2670
2678
  if (!this.inAsync && name === "await")
@@ -2679,7 +2687,7 @@ pp$3.checkUnreserved = function(ref) {
2679
2687
 
2680
2688
  pp$3.parseIdent = function(liberal, isBinding) {
2681
2689
  var node = this.startNode();
2682
- if (liberal && this.options.allowReserved == "never") { liberal = false; }
2690
+ if (liberal && this.options.allowReserved === "never") { liberal = false; }
2683
2691
  if (this.type === types.name) {
2684
2692
  node.name = this.value;
2685
2693
  } else if (this.type.keyword) {
@@ -2709,7 +2717,7 @@ pp$3.parseYield = function() {
2709
2717
 
2710
2718
  var node = this.startNode();
2711
2719
  this.next();
2712
- if (this.type == types.semi || this.canInsertSemicolon() || (this.type != types.star && !this.type.startsExpr)) {
2720
+ if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) {
2713
2721
  node.delegate = false;
2714
2722
  node.argument = null;
2715
2723
  } else {
@@ -2916,13 +2924,13 @@ pp$7.braceIsBlock = function(prevType) {
2916
2924
  // The check for `tt.name && exprAllowed` detects whether we are
2917
2925
  // after a `yield` or `of` construct. See the `updateContext` for
2918
2926
  // `tt.name`.
2919
- if (prevType === types._return || prevType == types.name && this.exprAllowed)
2927
+ if (prevType === types._return || prevType === types.name && this.exprAllowed)
2920
2928
  { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }
2921
- if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType == types.arrow)
2929
+ if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow)
2922
2930
  { return true }
2923
- if (prevType == types.braceL)
2931
+ if (prevType === types.braceL)
2924
2932
  { return parent === types$1.b_stat }
2925
- if (prevType == types._var || prevType == types.name)
2933
+ if (prevType === types._var || prevType === types.name)
2926
2934
  { return false }
2927
2935
  return !this.exprAllowed
2928
2936
  };
@@ -2940,7 +2948,7 @@ pp$7.inGeneratorContext = function() {
2940
2948
 
2941
2949
  pp$7.updateContext = function(prevType) {
2942
2950
  var update, type = this.type;
2943
- if (type.keyword && prevType == types.dot)
2951
+ if (type.keyword && prevType === types.dot)
2944
2952
  { this.exprAllowed = false; }
2945
2953
  else if (update = type.updateContext)
2946
2954
  { update.call(this, prevType); }
@@ -2951,7 +2959,7 @@ pp$7.updateContext = function(prevType) {
2951
2959
  // Token-specific context update code
2952
2960
 
2953
2961
  types.parenR.updateContext = types.braceR.updateContext = function() {
2954
- if (this.context.length == 1) {
2962
+ if (this.context.length === 1) {
2955
2963
  this.exprAllowed = true;
2956
2964
  return
2957
2965
  }
@@ -3000,7 +3008,7 @@ types.backQuote.updateContext = function() {
3000
3008
  };
3001
3009
 
3002
3010
  types.star.updateContext = function(prevType) {
3003
- if (prevType == types._function) {
3011
+ if (prevType === types._function) {
3004
3012
  var index = this.context.length - 1;
3005
3013
  if (this.context[index] === types$1.f_expr)
3006
3014
  { this.context[index] = types$1.f_expr_gen; }
@@ -3013,8 +3021,8 @@ types.star.updateContext = function(prevType) {
3013
3021
  types.name.updateContext = function(prevType) {
3014
3022
  var allowed = false;
3015
3023
  if (this.options.ecmaVersion >= 6) {
3016
- if (this.value == "of" && !this.exprAllowed ||
3017
- this.value == "yield" && this.inGeneratorContext())
3024
+ if (this.value === "of" && !this.exprAllowed ||
3025
+ this.value === "yield" && this.inGeneratorContext())
3018
3026
  { allowed = true; }
3019
3027
  }
3020
3028
  this.exprAllowed = allowed;
@@ -3583,7 +3591,7 @@ pp$9.validateRegExpFlags = function(state) {
3583
3591
 
3584
3592
  for (var i = 0; i < flags.length; i++) {
3585
3593
  var flag = flags.charAt(i);
3586
- if (validFlags.indexOf(flag) == -1) {
3594
+ if (validFlags.indexOf(flag) === -1) {
3587
3595
  this$1.raise(state.start, "Invalid regular expression flag");
3588
3596
  }
3589
3597
  if (flags.indexOf(flag, i + 1) > -1) {
@@ -4749,7 +4757,7 @@ pp$8.readToken_mult_modulo_exp = function(code) { // '%*'
4749
4757
  var tokentype = code === 42 ? types.star : types.modulo;
4750
4758
 
4751
4759
  // exponentiation operator ** and **=
4752
- if (this.options.ecmaVersion >= 7 && code == 42 && next === 42) {
4760
+ if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {
4753
4761
  ++size;
4754
4762
  tokentype = types.starstar;
4755
4763
  next = this.input.charCodeAt(this.pos + 2);
@@ -4775,7 +4783,7 @@ pp$8.readToken_caret = function() { // '^'
4775
4783
  pp$8.readToken_plus_min = function(code) { // '+-'
4776
4784
  var next = this.input.charCodeAt(this.pos + 1);
4777
4785
  if (next === code) {
4778
- if (next == 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 62 &&
4786
+ if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&
4779
4787
  (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {
4780
4788
  // A `-->` line comment
4781
4789
  this.skipLineComment(3);
@@ -4796,8 +4804,8 @@ pp$8.readToken_lt_gt = function(code) { // '<>'
4796
4804
  if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) }
4797
4805
  return this.finishOp(types.bitShift, size)
4798
4806
  }
4799
- if (next == 33 && code == 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) == 45 &&
4800
- this.input.charCodeAt(this.pos + 3) == 45) {
4807
+ if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&
4808
+ this.input.charCodeAt(this.pos + 3) === 45) {
4801
4809
  // `<!--`, an XML-style comment that should be interpreted as a line comment
4802
4810
  this.skipLineComment(4);
4803
4811
  this.skipSpace();
@@ -5031,7 +5039,7 @@ pp$8.readString = function(quote) {
5031
5039
  out += this$1.readEscapedChar(false);
5032
5040
  chunkStart = this$1.pos;
5033
5041
  } else {
5034
- if (isNewLine(ch)) { this$1.raise(this$1.start, "Unterminated string constant"); }
5042
+ if (isNewLine(ch, this$1.options.ecmaVersion >= 10)) { this$1.raise(this$1.start, "Unterminated string constant"); }
5035
5043
  ++this$1.pos;
5036
5044
  }
5037
5045
  }
@@ -5167,7 +5175,7 @@ pp$8.readEscapedChar = function(inTemplate) {
5167
5175
  }
5168
5176
  this.pos += octalStr.length - 1;
5169
5177
  ch = this.input.charCodeAt(this.pos);
5170
- if ((octalStr !== "0" || ch == 56 || ch == 57) && (this.strict || inTemplate)) {
5178
+ if ((octalStr !== "0" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {
5171
5179
  this.invalidStringToken(
5172
5180
  this.pos - 1 - octalStr.length,
5173
5181
  inTemplate
@@ -5210,7 +5218,7 @@ pp$8.readWord1 = function() {
5210
5218
  this$1.containsEsc = true;
5211
5219
  word += this$1.input.slice(chunkStart, this$1.pos);
5212
5220
  var escStart = this$1.pos;
5213
- if (this$1.input.charCodeAt(++this$1.pos) != 117) // "u"
5221
+ if (this$1.input.charCodeAt(++this$1.pos) !== 117) // "u"
5214
5222
  { this$1.invalidStringToken(this$1.pos, "Expecting Unicode escape sequence \\uXXXX"); }
5215
5223
  ++this$1.pos;
5216
5224
  var esc = this$1.readCodePoint();
@@ -5260,7 +5268,7 @@ pp$8.readWord = function() {
5260
5268
  // [dammit]: acorn_loose.js
5261
5269
  // [walk]: util/walk.js
5262
5270
 
5263
- var version = "5.5.3";
5271
+ var version = "5.7.2";
5264
5272
 
5265
5273
  // The main exported interface (under `self.acorn` when in the
5266
5274
  // browser) is a `parse` function that takes a code string and