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
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