summaryrefslogtreecommitdiff
path: root/tools/node_modules
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-02-15 16:51:43 -0500
committercjihrig <cjihrig@gmail.com>2019-02-17 21:56:18 -0500
commit77b39c2eb2c9fe437d0e09e3e7682564d815c7fb (patch)
treea10a28bd5022e46c7ba49103282f63a80bf08886 /tools/node_modules
parent2da7ff5e969538a19c27e6929d435094347f90a8 (diff)
downloadandroid-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.tar.gz
android-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.tar.bz2
android-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.zip
tools: update ESLint to 5.14.0
Update ESLint to 5.14.0 PR-URL: https://github.com/nodejs/node/pull/26142 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Wyatt Preul <wpreul@gmail.com>
Diffstat (limited to 'tools/node_modules')
-rw-r--r--tools/node_modules/eslint/README.md224
-rw-r--r--tools/node_modules/eslint/lib/cli-engine.js3
-rw-r--r--tools/node_modules/eslint/lib/config/config-file.js27
-rw-r--r--tools/node_modules/eslint/lib/config/config-initializer.js293
-rw-r--r--tools/node_modules/eslint/lib/config/config-ops.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/accessor-pairs.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/array-bracket-newline.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/array-callback-return.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/array-element-newline.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/arrow-body-style.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/arrow-parens.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/arrow-spacing.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/brace-style.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/camelcase.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/capitalized-comments.js29
-rw-r--r--tools/node_modules/eslint/lib/rules/class-methods-use-this.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/comma-spacing.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/complexity.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/consistent-return.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/dot-notation.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/eqeqeq.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/func-call-spacing.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/func-style.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/getter-return.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/id-length.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/id-match.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/indent.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/init-declarations.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/key-spacing.js81
-rw-r--r--tools/node_modules/eslint/lib/rules/keyword-spacing.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/line-comment-position.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/lines-around-comment.js26
-rw-r--r--tools/node_modules/eslint/lib/rules/lines-between-class-members.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/max-depth.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/max-len.js27
-rw-r--r--tools/node_modules/eslint/lib/rules/max-lines-per-function.js28
-rw-r--r--tools/node_modules/eslint/lib/rules/max-lines.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/max-nested-callbacks.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/max-params.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/max-statements-per-line.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/max-statements.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/new-cap.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/newline-per-chained-call.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-bitwise.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-confusing-arrow.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-constant-condition.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-duplicate-imports.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-else-return.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-empty.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-eval.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-parens.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-fallthrough.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-implicit-coercion.js15
-rw-r--r--tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/no-labels.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/no-magic-numbers.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-mixed-operators.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-mixed-requires.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-multi-spaces.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-param-reassign.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-plusplus.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-redeclare.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/no-self-assign.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js18
-rw-r--r--tools/node_modules/eslint/lib/rules/no-shadow.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-sync.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-tabs.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-trailing-spaces.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-undef.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-underscore-dangle.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unused-expressions.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unused-vars.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/no-use-before-define.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-rename.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/object-curly-newline.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/object-property-newline.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/object-shorthand.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/one-var.js62
-rw-r--r--tools/node_modules/eslint/lib/rules/padded-blocks.js41
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-const.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-destructuring.js82
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-spread.js15
-rw-r--r--tools/node_modules/eslint/lib/rules/quote-props.js15
-rw-r--r--tools/node_modules/eslint/lib/rules/quotes.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/require-jsdoc.js20
-rw-r--r--tools/node_modules/eslint/lib/rules/semi-spacing.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/semi.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/sort-imports.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/sort-keys.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/sort-vars.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/space-before-function-paren.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/space-infix-ops.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/space-unary-ops.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/spaced-comment.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/switch-colon-spacing.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/valid-jsdoc.js15
-rw-r--r--tools/node_modules/eslint/lib/rules/valid-typeof.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/wrap-iife.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/yield-star-spacing.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/yoda.js6
-rw-r--r--tools/node_modules/eslint/lib/util/ajv.js1
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/README.md2
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/dist/acorn.js693
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/dist/acorn.js.map2
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs693
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs.map2
-rw-r--r--tools/node_modules/eslint/node_modules/acorn/package.json2
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/README.md69
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js85
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js4
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map2
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/lib/ajv.js2
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js22
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/lib/keyword.js59
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-secure.json94
-rw-r--r--tools/node_modules/eslint/node_modules/ajv/package.json4
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt19
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/README.md135
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js2
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js189
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js185
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/package.json42
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/template/license.after2
-rw-r--r--tools/node_modules/eslint/node_modules/circular-json/template/license.before1
-rw-r--r--tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js1
-rw-r--r--tools/node_modules/eslint/node_modules/doctrine/package.json17
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/LICENSE-MIT.txt20
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/README.md73
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js6
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js6
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/index.js6
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/package.json55
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/text.js6
-rw-r--r--tools/node_modules/eslint/node_modules/espree/package.json4
-rw-r--r--tools/node_modules/eslint/node_modules/file-entry-cache/README.md17
-rw-r--r--tools/node_modules/eslint/node_modules/file-entry-cache/cache.js106
-rw-r--r--tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md67
-rw-r--r--tools/node_modules/eslint/node_modules/file-entry-cache/package.json14
-rw-r--r--tools/node_modules/eslint/node_modules/flat-cache/cache.js2
-rw-r--r--tools/node_modules/eslint/node_modules/flat-cache/changelog.md149
-rw-r--r--tools/node_modules/eslint/node_modules/flat-cache/del.js2
-rw-r--r--tools/node_modules/eslint/node_modules/flat-cache/package.json11
-rw-r--r--tools/node_modules/eslint/node_modules/flat-cache/utils.js14
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/README.md52
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/cjs/index.js116
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/esm/index.js118
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/index.js115
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/min.js2
-rw-r--r--tools/node_modules/eslint/node_modules/flatted/package.json48
-rw-r--r--tools/node_modules/eslint/node_modules/globals/globals.json3
-rw-r--r--tools/node_modules/eslint/node_modules/globals/package.json2
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/README.md133
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/clone.js19
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js279
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js118
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/package.json55
-rw-r--r--tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js329
-rw-r--r--tools/node_modules/eslint/node_modules/rxjs/bundles/rxjs.umd.js64
-rw-r--r--tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js4
-rw-r--r--tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.flow6
-rw-r--r--tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.map2
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/index.js14
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/license9
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/package.json62
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/readme.md65
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/string-width/index.js39
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/string-width/license9
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/string-width/package.json65
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/string-width/readme.md42
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/index.js4
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/license9
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/package.json61
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/readme.md53
-rw-r--r--tools/node_modules/eslint/node_modules/table/package.json38
-rw-r--r--tools/node_modules/eslint/node_modules/write/LICENSE4
-rw-r--r--tools/node_modules/eslint/node_modules/write/README.md163
-rw-r--r--tools/node_modules/eslint/node_modules/write/index.js161
-rw-r--r--tools/node_modules/eslint/node_modules/write/package.json51
-rw-r--r--tools/node_modules/eslint/package.json39
184 files changed, 3205 insertions, 3645 deletions
diff --git a/tools/node_modules/eslint/README.md b/tools/node_modules/eslint/README.md
index e1855ec3f4..e0ee6a74ff 100644
--- a/tools/node_modules/eslint/README.md
+++ b/tools/node_modules/eslint/README.md
@@ -197,170 +197,82 @@ These folks keep the project moving and are resources for help.
The people who manage releases, review feature requests, and meet regularly to ensure ESLint is properly maintained.
-<table>
- <tbody>
- <tr>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/nzakas">
- <img src="https://github.com/nzakas.png?s=75" width="75px" height="75px"><br/>
- <sub>Nicholas C. Zakas</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/ilyavolodin">
- <img src="https://github.com/ilyavolodin.png?s=75" width="75px" height="75px"><br/>
- <sub>Ilya Volodin</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/btmills">
- <img src="https://github.com/btmills.png?s=75" width="75px" height="75px"><br/>
- <sub>Brandon Mills</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/gyandeeps">
- <img src="https://github.com/gyandeeps.png?s=75" width="75px" height="75px"><br/>
- <sub>Gyandeep Singh</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/mysticatea">
- <img src="https://github.com/mysticatea.png?s=75" width="75px" height="75px"><br/>
- <sub>Toru Nagashima</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/alberto">
- <img src="https://github.com/alberto.png?s=75" width="75px" height="75px"><br/>
- <sub>Alberto Rodríguez</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/kaicataldo">
- <img src="https://github.com/kaicataldo.png?s=75" width="75px" height="75px"><br/>
- <sub>Kai Cataldo</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/not-an-aardvark">
- <img src="https://github.com/not-an-aardvark.png?s=75" width="75px" height="75px"><br/>
- <sub>Teddy Katz</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/platinumazure">
- <img src="https://github.com/platinumazure.png?s=75" width="75px" height="75px"><br/>
- <sub>Kevin Partington</sub></a>
- </td>
- </tr>
- </tbody>
-</table>
+<!-- NOTE: This section is autogenerated. Do not manually edit.-->
+<!--tscstart-->
+<table><tbody><tr><td align="center" valign="top" width="11%">
+<a href="https://github.com/nzakas">
+<img src="https://github.com/nzakas.png?s=75" width="75" height="75"><br />
+Nicholas C. Zakas
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/platinumazure">
+<img src="https://github.com/platinumazure.png?s=75" width="75" height="75"><br />
+Kevin Partington
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/ilyavolodin">
+<img src="https://github.com/ilyavolodin.png?s=75" width="75" height="75"><br />
+Ilya Volodin
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/btmills">
+<img src="https://github.com/btmills.png?s=75" width="75" height="75"><br />
+Brandon Mills
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/mysticatea">
+<img src="https://github.com/mysticatea.png?s=75" width="75" height="75"><br />
+Toru Nagashima
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/gyandeeps">
+<img src="https://github.com/gyandeeps.png?s=75" width="75" height="75"><br />
+Gyandeep Singh
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/kaicataldo">
+<img src="https://github.com/kaicataldo.png?s=75" width="75" height="75"><br />
+Kai Cataldo
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/not-an-aardvark">
+<img src="https://github.com/not-an-aardvark.png?s=75" width="75" height="75"><br />
+Teddy Katz
+</a>
+</td></tr></tbody></table><!--tscend-->
### Committers
The people who review and fix bugs and help triage issues.
-<table>
- <tbody>
- <tr>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/Aladdin-ADD">
- <img src="https://github.com/Aladdin-ADD.png?s=75" width="75px" height="75px"><br/>
- <sub>薛定谔的猫</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/g-plane">
- <img src="https://github.com/g-plane.png?s=75" width="75px" height="75px"><br/>
- <sub>Pig Fang</sub></a>
- </td>
- </tr>
- </tbody>
-</table>
-
-
-### Alumni
-
-Former TSC members and committers who previously helped maintain ESLint.
-
-<table>
- <tbody>
- <tr>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/lo1tuma">
- <img src="https://github.com/lo1tuma.png?s=75" width="75px" height="75px"><br/>
- <sub>Mathias Schreck</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/xjamundx">
- <img src="https://github.com/xjamundx.png?s=75" width="75px" height="75px"><br/>
- <sub>Jamund Ferguson</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/ianvs">
- <img src="https://github.com/ianvs.png?s=75" width="75px" height="75px"><br/>
- <sub>Ian VanSchooten</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/byk">
- <img src="https://github.com/byk.png?s=75" width="75px" height="75px"><br/>
- <sub>Burak Yiğit Kaya</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/michaelficarra">
- <img src="https://github.com/michaelficarra.png?s=75" width="75px" height="75px"><br/>
- <sub>Michael Ficarra</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/pedrottimark">
- <img src="https://github.com/pedrottimark.png?s=75" width="75px" height="75px"><br/>
- <sub>Mark Pedrotti</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/markelog">
- <img src="https://github.com/markelog.png?s=75" width="75px" height="75px"><br/>
- <sub>Oleg Gaidarenko</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/mikesherov">
- <img src="https://github.com/mikesherov.png?s=75" width="75px" height="75px"><br/>
- <sub>Mike Sherov</sub></a>
- </td>
- </tr>
- <tr>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/hzoo">
- <img src="https://github.com/hzoo.png?s=75" width="75px" height="75px"><br/>
- <sub>Henry Zhu</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/mdevils">
- <img src="https://github.com/mdevils.png?s=75" width="75px" height="75px"><br/>
- <sub>Marat Dulin</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/zxqfox">
- <img src="https://github.com/zxqfox.png?s=75" width="75px" height="75px"><br/>
- <sub>Alexej Yaroshevich</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/vitorbal">
- <img src="https://github.com/vitorbal.png?s=75" width="75px" height="75px"><br/>
- <sub>Vitor Balocco</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/JamesHenry">
- <img src="https://github.com/JamesHenry.png?s=75" width="75px" height="75px"><br/>
- <sub>James Henry</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/soda0289">
- <img src="https://github.com/soda0289.png?s=75" width="75px" height="75px"><br/>
- <sub>Reyad Attiyat</sub></a>
- </td>
- <td align="center" valign="top" width="11%">
- <a href="https://github.com/VictorHom">
- <img src="https://github.com/VictorHom.png?s=75" width="75px" height="75px"><br/>
- <sub>Victor Hom</sub></a>
- </td>
- </tr>
- </tbody>
-</table>
+<!-- NOTE: This section is autogenerated. Do not manually edit.-->
+<!--committersstart-->
+<table><tbody><tr><td align="center" valign="top" width="11%">
+<a href="https://github.com/aladdin-add">
+<img src="https://github.com/aladdin-add.png?s=75" width="75" height="75"><br />
+薛定谔的猫
+</a>
+</td><td align="center" valign="top" width="11%">
+<a href="https://github.com/g-plane">
+<img src="https://github.com/g-plane.png?s=75" width="75" height="75"><br />
+Pig Fang
+</a>
+</td></tr></tbody></table><!--committersend-->
## Sponsors
+The following companies, organizations, and individuals support ESLint's ongoing maintenance and development. [Become a Sponsor](https://opencollective.com/eslint) to get your logo on our README and website.
+
+<!-- NOTE: This section is autogenerated. Do not manually edit.-->
+<!--sponsorsstart-->
+<h3>Gold Sponsors</h3>
+<p><a href="https://code.facebook.com/projects/"><img src="https://images.opencollective.com/proxy/images/?src=https%3A%2F%2Fres.cloudinary.com%2Fopencollective%2Fimage%2Fupload%2Fv1508519428%2FS9gk78AS_400x400_fulq2l.jpg&height=96" alt="Facebook Open Source" height="96"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/proxy/images/?src=https%3A%2F%2Fopencollective-production.s3-us-west-1.amazonaws.com%2F098e3bd0-4d57-11e8-9324-0f6cc1f92bf1.png&height=96" alt="Airbnb" height="96"></a></p><h3>Silver Sponsors</h3>
+<p><a href="https://www.ampproject.org/"><img src="https://images.opencollective.com/proxy/images/?src=https%3A%2F%2Fopencollective-production.s3-us-west-1.amazonaws.com%2F68ed8b70-ebf2-11e6-9958-cb7e79408c56.png&height=96" alt="AMP Project" height="64"></a></p><h3>Bronze Sponsors</h3>
+<p><a href="http://faithlife.com/ref/about"><img src="https://images.opencollective.com/proxy/images/?src=https%3A%2F%2Flogo.clearbit.com%2Ffaithlife.com&height=96" alt="Faithlife" height="32"></a></p>
+<!--sponsorsend-->
+
+## Technology Sponsors
+
* Site search ([eslint.org](https://eslint.org)) is sponsored by [Algolia](https://www.algolia.com)
diff --git a/tools/node_modules/eslint/lib/cli-engine.js b/tools/node_modules/eslint/lib/cli-engine.js
index d7de2592a1..dbf1abd004 100644
--- a/tools/node_modules/eslint/lib/cli-engine.js
+++ b/tools/node_modules/eslint/lib/cli-engine.js
@@ -455,6 +455,9 @@ class CLIEngine {
if (this.options.rules && Object.keys(this.options.rules).length) {
const loadedRules = this.linter.getRules();
+ // Ajv validator with default schema will mutate original object, so we must clone it recursively.
+ this.options.rules = lodash.cloneDeep(this.options.rules);
+
Object.keys(this.options.rules).forEach(name => {
validator.validateRuleOptions(loadedRules.get(name), name, this.options.rules[name], "CLI");
});
diff --git a/tools/node_modules/eslint/lib/config/config-file.js b/tools/node_modules/eslint/lib/config/config-file.js
index dde79cb40c..f76b92830c 100644
--- a/tools/node_modules/eslint/lib/config/config-file.js
+++ b/tools/node_modules/eslint/lib/config/config-file.js
@@ -280,15 +280,38 @@ function writeYAMLConfigFile(config, filePath) {
* Writes a configuration file in JavaScript format.
* @param {Object} config The configuration object to write.
* @param {string} filePath The filename to write to.
+ * @throws {Error} If an error occurs linting the config file contents.
* @returns {void}
* @private
*/
function writeJSConfigFile(config, filePath) {
debug(`Writing JS config file: ${filePath}`);
- const content = `module.exports = ${stringify(config, { cmp: sortByKey, space: 4 })};`;
+ let contentToWrite;
+ const stringifiedContent = `module.exports = ${stringify(config, { cmp: sortByKey, space: 4 })};`;
- fs.writeFileSync(filePath, content, "utf8");
+ try {
+ const CLIEngine = require("../cli-engine");
+ const linter = new CLIEngine({
+ baseConfig: config,
+ fix: true,
+ useEslintrc: false
+ });
+ const report = linter.executeOnText(stringifiedContent);
+
+ contentToWrite = report.results[0].output || stringifiedContent;
+ } catch (e) {
+ debug("Error linting JavaScript config file, writing unlinted version");
+ const errorMessage = e.message;
+
+ contentToWrite = stringifiedContent;
+ e.message = "An error occurred while generating your JavaScript config file. ";
+ e.message += "A config file was still generated, but the config file itself may not follow your linting rules.";
+ e.message += `\nError: ${errorMessage}`;
+ throw e;
+ } finally {
+ fs.writeFileSync(filePath, contentToWrite, "utf8");
+ }
}
/**
diff --git a/tools/node_modules/eslint/lib/config/config-initializer.js b/tools/node_modules/eslint/lib/config/config-initializer.js
index a6791ba853..b8126d4735 100644
--- a/tools/node_modules/eslint/lib/config/config-initializer.js
+++ b/tools/node_modules/eslint/lib/config/config-initializer.js
@@ -3,6 +3,7 @@
* @author Ilya Volodin
*/
+
"use strict";
//------------------------------------------------------------------------------
@@ -28,6 +29,8 @@ const debug = require("debug")("eslint:config-initializer");
// Private
//------------------------------------------------------------------------------
+const DEFAULT_ECMA_VERSION = 2018;
+
/* istanbul ignore next: hard to test fs function */
/**
* Create .eslintrc file in the current working directory
@@ -239,43 +242,65 @@ function configureRules(answers, config) {
* @returns {Object} config object
*/
function processAnswers(answers) {
- let config = { rules: {}, env: {}, parserOptions: {} };
+ let config = {
+ rules: {},
+ env: {},
+ parserOptions: {},
+ extends: []
+ };
- config.parserOptions.ecmaVersion = answers.ecmaVersion;
- if (answers.ecmaVersion >= 2015) {
- if (answers.modules) {
- config.parserOptions.sourceType = "module";
- }
- config.env.es6 = true;
- }
+ // set the latest ECMAScript version
+ config.parserOptions.ecmaVersion = DEFAULT_ECMA_VERSION;
+ config.env.es6 = true;
+ config.globals = {
+ Atomics: "readonly",
+ SharedArrayBuffer: "readonly"
+ };
- if (answers.commonjs) {
+ // set the module type
+ if (answers.moduleType === "esm") {
+ config.parserOptions.sourceType = "module";
+ } else if (answers.moduleType === "commonjs") {
config.env.commonjs = true;
}
+
+ // add in browser and node environments if necessary
answers.env.forEach(env => {
config.env[env] = true;
});
- if (answers.jsx) {
- config.parserOptions = config.parserOptions || {};
- config.parserOptions.ecmaFeatures = config.parserOptions.ecmaFeatures || {};
- config.parserOptions.ecmaFeatures.jsx = true;
- if (answers.react) {
- config.plugins = ["react"];
- config.parserOptions.ecmaVersion = 2018;
- }
+
+ // add in library information
+ if (answers.framework === "react") {
+ config.parserOptions.ecmaFeatures = {
+ jsx: true
+ };
+ config.plugins = ["react"];
+ } else if (answers.framework === "vue") {
+ config.plugins = ["vue"];
+ config.extends.push("plugin:vue/essential");
}
- if (answers.source === "prompt") {
- config.extends = "eslint:recommended";
- config.rules.indent = ["error", answers.indent];
- config.rules.quotes = ["error", answers.quotes];
- config.rules["linebreak-style"] = ["error", answers.linebreak];
- config.rules.semi = ["error", answers.semi ? "always" : "never"];
+ // setup rules based on problems/style enforcement preferences
+ if (answers.purpose === "problems") {
+ config.extends.unshift("eslint:recommended");
+ } else if (answers.purpose === "style") {
+ if (answers.source === "prompt") {
+ config.extends.unshift("eslint:recommended");
+ config.rules.indent = ["error", answers.indent];
+ config.rules.quotes = ["error", answers.quotes];
+ config.rules["linebreak-style"] = ["error", answers.linebreak];
+ config.rules.semi = ["error", answers.semi ? "always" : "never"];
+ } else if (answers.source === "auto") {
+ config = configureRules(answers, config);
+ config = autoconfig.extendFromRecommended(config);
+ }
}
- if (answers.source === "auto") {
- config = configureRules(answers, config);
- config = autoconfig.extendFromRecommended(config);
+ // normalize extends
+ if (config.extends.length === 0) {
+ delete config.extends;
+ } else if (config.extends.length === 1) {
+ config.extends = config.extends[0];
}
ConfigOps.normalizeToStrings(config);
@@ -324,7 +349,7 @@ function getLocalESLintVersion() {
* @returns {string} The shareable config name.
*/
function getStyleGuideName(answers) {
- if (answers.styleguide === "airbnb" && !answers.airbnbReact) {
+ if (answers.styleguide === "airbnb" && answers.framework !== "react") {
return "airbnb-base";
}
return answers.styleguide;
@@ -419,14 +444,60 @@ function promptUser() {
return inquirer.prompt([
{
type: "list",
+ name: "purpose",
+ message: "How would you like to use ESLint?",
+ default: "problems",
+ choices: [
+ { name: "To check syntax only", value: "syntax" },
+ { name: "To check syntax and find problems", value: "problems" },
+ { name: "To check syntax, find problems, and enforce code style", value: "style" }
+ ]
+ },
+ {
+ type: "list",
+ name: "moduleType",
+ message: "What type of modules does your project use?",
+ default: "esm",
+ choices: [
+ { name: "JavaScript modules (import/export)", value: "esm" },
+ { name: "CommonJS (require/exports)", value: "commonjs" },
+ { name: "None of these", value: "none" }
+ ]
+ },
+ {
+ type: "list",
+ name: "framework",
+ message: "Which framework does your project use?",
+ default: "react",
+ choices: [
+ { name: "React", value: "react" },
+ { name: "Vue.js", value: "vue" },
+ { name: "None of these", value: "none" }
+ ]
+ },
+ {
+ type: "checkbox",
+ name: "env",
+ message: "Where does your code run?",
+ default: ["browser"],
+ choices: [
+ { name: "Browser", value: "browser" },
+ { name: "Node", value: "node" }
+ ]
+ },
+ {
+ type: "list",
name: "source",
- message: "How would you like to configure ESLint?",
- default: "prompt",
+ message: "How would you like to define a style for your project?",
+ default: "guide",
choices: [
{ name: "Use a popular style guide", value: "guide" },
{ name: "Answer questions about your style", value: "prompt" },
{ name: "Inspect your JavaScript file(s)", value: "auto" }
- ]
+ ],
+ when(answers) {
+ return answers.purpose === "style";
+ }
},
{
type: "list",
@@ -443,15 +514,6 @@ function promptUser() {
}
},
{
- type: "confirm",
- name: "airbnbReact",
- message: "Do you use React?",
- default: false,
- when(answers) {
- return answers.styleguide === "airbnb";
- }
- },
- {
type: "input",
name: "patterns",
message: "Which file(s), path(s), or glob(s) should be examined?",
@@ -470,10 +532,7 @@ function promptUser() {
name: "format",
message: "What format do you want your config file to be in?",
default: "JavaScript",
- choices: ["JavaScript", "YAML", "JSON"],
- when(answers) {
- return ((answers.source === "guide" && answers.packageJsonExists) || answers.source === "auto");
- }
+ choices: ["JavaScript", "YAML", "JSON"]
},
{
type: "confirm",
@@ -492,6 +551,15 @@ function promptUser() {
}
]).then(earlyAnswers => {
+ // early exit if no style guide is necessary
+ if (earlyAnswers.purpose !== "style") {
+ const config = processAnswers(earlyAnswers);
+ const modules = getModulesList(config);
+
+ return askInstallModules(modules, earlyAnswers.packageJsonExists)
+ .then(() => writeFile(config, earlyAnswers.format));
+ }
+
// early exit if you are using a style guide
if (earlyAnswers.source === "guide") {
if (!earlyAnswers.packageJsonExists) {
@@ -501,130 +569,69 @@ function promptUser() {
if (earlyAnswers.installESLint === false && !semver.satisfies(earlyAnswers.localESLintVersion, earlyAnswers.requiredESLintVersionRange)) {
log.info(`Note: it might not work since ESLint's version is mismatched with the ${earlyAnswers.styleguide} config.`);
}
- if (earlyAnswers.styleguide === "airbnb" && !earlyAnswers.airbnbReact) {
+ if (earlyAnswers.styleguide === "airbnb" && earlyAnswers.framework !== "react") {
earlyAnswers.styleguide = "airbnb-base";
}
- const config = getConfigForStyleGuide(earlyAnswers.styleguide);
+ const config = ConfigOps.merge(processAnswers(earlyAnswers), getConfigForStyleGuide(earlyAnswers.styleguide));
const modules = getModulesList(config);
return askInstallModules(modules, earlyAnswers.packageJsonExists)
.then(() => writeFile(config, earlyAnswers.format));
+
}
- // continue with the questions otherwise...
+ if (earlyAnswers.source === "auto") {
+ const combinedAnswers = Object.assign({}, earlyAnswers);
+ const config = processAnswers(combinedAnswers);
+ const modules = getModulesList(config);
+
+ return askInstallModules(modules).then(() => writeFile(config, earlyAnswers.format));
+ }
+
+ // continue with the style questions otherwise...
return inquirer.prompt([
{
type: "list",
- name: "ecmaVersion",
- message: "Which version of ECMAScript do you use?",
- choices: [
- { name: "ES3", value: 3 },
- { name: "ES5", value: 5 },
- { name: "ES2015", value: 2015 },
- { name: "ES2016", value: 2016 },
- { name: "ES2017", value: 2017 },
- { name: "ES2018", value: 2018 }
- ],
- default: 1 // This is the index in the choices list
+ name: "indent",
+ message: "What style of indentation do you use?",
+ default: "tab",
+ choices: [{ name: "Tabs", value: "tab" }, { name: "Spaces", value: 4 }]
},
{
- type: "confirm",
- name: "modules",
- message: "Are you using ES6 modules?",
- default: false,
- when(answers) {
- return answers.ecmaVersion >= 2015;
- }
- },
- {
- type: "checkbox",
- name: "env",
- message: "Where will your code run?",
- default: ["browser"],
- choices: [{ name: "Browser", value: "browser" }, { name: "Node", value: "node" }]
+ type: "list",
+ name: "quotes",
+ message: "What quotes do you use for strings?",
+ default: "double",
+ choices: [{ name: "Double", value: "double" }, { name: "Single", value: "single" }]
},
{
- type: "confirm",
- name: "commonjs",
- message: "Do you use CommonJS?",
- default: false,
- when(answers) {
- return answers.env.some(env => env === "browser");
- }
+ type: "list",
+ name: "linebreak",
+ message: "What line endings do you use?",
+ default: "unix",
+ choices: [{ name: "Unix", value: "unix" }, { name: "Windows", value: "windows" }]
},
{
type: "confirm",
- name: "jsx",
- message: "Do you use JSX?",
- default: false
+ name: "semi",
+ message: "Do you require semicolons?",
+ default: true
},
{
- type: "confirm",
- name: "react",
- message: "Do you use React?",
- default: false,
- when(answers) {
- return answers.jsx;
- }
- }
- ]).then(secondAnswers => {
-
- // early exit if you are using automatic style generation
- if (earlyAnswers.source === "auto") {
- const combinedAnswers = Object.assign({}, earlyAnswers, secondAnswers);
-
- const config = processAnswers(combinedAnswers);
-
- const modules = getModulesList(config);
-
- return askInstallModules(modules).then(() => writeFile(config, earlyAnswers.format));
+ type: "list",
+ name: "format",
+ message: "What format do you want your config file to be in?",
+ default: "JavaScript",
+ choices: ["JavaScript", "YAML", "JSON"]
}
+ ]).then(answers => {
+ const totalAnswers = Object.assign({}, earlyAnswers, answers);
- // continue with the style questions otherwise...
- return inquirer.prompt([
- {
- type: "list",
- name: "indent",
- message: "What style of indentation do you use?",
- default: "tab",
- choices: [{ name: "Tabs", value: "tab" }, { name: "Spaces", value: 4 }]
- },
- {
- type: "list",
- name: "quotes",
- message: "What quotes do you use for strings?",
- default: "double",
- choices: [{ name: "Double", value: "double" }, { name: "Single", value: "single" }]
- },
- {
- type: "list",
- name: "linebreak",
- message: "What line endings do you use?",
- default: "unix",
- choices: [{ name: "Unix", value: "unix" }, { name: "Windows", value: "windows" }]
- },
- {
- type: "confirm",
- name: "semi",
- message: "Do you require semicolons?",
- default: true
- },
- {
- type: "list",
- name: "format",
- message: "What format do you want your config file to be in?",
- default: "JavaScript",
- choices: ["JavaScript", "YAML", "JSON"]
- }
- ]).then(answers => {
- const totalAnswers = Object.assign({}, earlyAnswers, secondAnswers, answers);
-
- const config = processAnswers(totalAnswers);
- const modules = getModulesList(config);
+ const config = processAnswers(totalAnswers);
+ const modules = getModulesList(config);
- return askInstallModules(modules).then(() => writeFile(config, answers.format));
- });
+ return askInstallModules(modules).then(() => writeFile(config, answers.format));
});
});
}
diff --git a/tools/node_modules/eslint/lib/config/config-ops.js b/tools/node_modules/eslint/lib/config/config-ops.js
index 48f38b4905..b38cdf7d7c 100644
--- a/tools/node_modules/eslint/lib/config/config-ops.js
+++ b/tools/node_modules/eslint/lib/config/config-ops.js
@@ -386,12 +386,14 @@ module.exports = {
case true:
case "true":
case "writeable":
+ case "writable":
return "writeable";
case null:
case false:
case "false":
case "readable":
+ case "readonly":
return "readable";
// Fallback to minimize compatibility impact
diff --git a/tools/node_modules/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js
index 032e894305..aca2318486 100644
--- a/tools/node_modules/eslint/lib/rules/accessor-pairs.js
+++ b/tools/node_modules/eslint/lib/rules/accessor-pairs.js
@@ -85,10 +85,12 @@ module.exports = {
type: "object",
properties: {
getWithoutSet: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
setWithoutGet: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js
index a458e69f76..b98fa9d27c 100644
--- a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js
+++ b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js
@@ -34,11 +34,13 @@ module.exports = {
type: "object",
properties: {
multiline: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
minItems: {
type: ["integer", "null"],
- minimum: 0
+ minimum: 0,
+ default: null
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/array-callback-return.js b/tools/node_modules/eslint/lib/rules/array-callback-return.js
index bfee39b037..f88f4b8bfa 100644
--- a/tools/node_modules/eslint/lib/rules/array-callback-return.js
+++ b/tools/node_modules/eslint/lib/rules/array-callback-return.js
@@ -155,7 +155,8 @@ module.exports = {
type: "object",
properties: {
allowImplicit: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/array-element-newline.js b/tools/node_modules/eslint/lib/rules/array-element-newline.js
index dadb26fdd2..0efceedd27 100644
--- a/tools/node_modules/eslint/lib/rules/array-element-newline.js
+++ b/tools/node_modules/eslint/lib/rules/array-element-newline.js
@@ -34,11 +34,13 @@ module.exports = {
type: "object",
properties: {
multiline: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
minItems: {
type: ["integer", "null"],
- minimum: 0
+ minimum: 0,
+ default: null
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/arrow-body-style.js b/tools/node_modules/eslint/lib/rules/arrow-body-style.js
index c2ce3b59e4..83fc28aba0 100644
--- a/tools/node_modules/eslint/lib/rules/arrow-body-style.js
+++ b/tools/node_modules/eslint/lib/rules/arrow-body-style.js
@@ -46,7 +46,7 @@ module.exports = {
{
type: "object",
properties: {
- requireReturnForObjectLiteral: { type: "boolean" }
+ requireReturnForObjectLiteral: { type: "boolean", default: false }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js
index 637a0c1f1f..217a9b60e1 100644
--- a/tools/node_modules/eslint/lib/rules/arrow-parens.js
+++ b/tools/node_modules/eslint/lib/rules/arrow-parens.js
@@ -35,7 +35,8 @@ module.exports = {
type: "object",
properties: {
requireForBlockBody: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/arrow-spacing.js b/tools/node_modules/eslint/lib/rules/arrow-spacing.js
index 87d381840a..95acb78772 100644
--- a/tools/node_modules/eslint/lib/rules/arrow-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/arrow-spacing.js
@@ -32,10 +32,12 @@ module.exports = {
type: "object",
properties: {
before: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
after: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -54,11 +56,10 @@ module.exports = {
create(context) {
// merge rules with default
- const rule = { before: true, after: true },
- option = context.options[0] || {};
+ const rule = Object.assign({}, context.options[0]);
- rule.before = option.before !== false;
- rule.after = option.after !== false;
+ rule.before = rule.before !== false;
+ rule.after = rule.after !== false;
const sourceCode = context.getSourceCode();
diff --git a/tools/node_modules/eslint/lib/rules/brace-style.js b/tools/node_modules/eslint/lib/rules/brace-style.js
index d172124d2f..17a5c7fdf9 100644
--- a/tools/node_modules/eslint/lib/rules/brace-style.js
+++ b/tools/node_modules/eslint/lib/rules/brace-style.js
@@ -30,7 +30,8 @@ module.exports = {
type: "object",
properties: {
allowSingleLine: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js
index a8341c84b6..6dd3793f66 100644
--- a/tools/node_modules/eslint/lib/rules/camelcase.js
+++ b/tools/node_modules/eslint/lib/rules/camelcase.js
@@ -25,7 +25,8 @@ module.exports = {
type: "object",
properties: {
ignoreDestructuring: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
properties: {
enum: ["always", "never"]
@@ -54,7 +55,7 @@ module.exports = {
const options = context.options[0] || {};
let properties = options.properties || "";
- const ignoreDestructuring = options.ignoreDestructuring || false;
+ const ignoreDestructuring = options.ignoreDestructuring;
const allow = options.allow || [];
if (properties !== "always" && properties !== "never") {
diff --git a/tools/node_modules/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js
index 7947833b27..285f856379 100644
--- a/tools/node_modules/eslint/lib/rules/capitalized-comments.js
+++ b/tools/node_modules/eslint/lib/rules/capitalized-comments.js
@@ -17,12 +17,7 @@ const astUtils = require("../util/ast-utils");
const DEFAULT_IGNORE_PATTERN = astUtils.COMMENTS_IGNORE_PATTERN,
WHITESPACE = /\s/g,
- MAYBE_URL = /^\s*[^:/?#\s]+:\/\/[^?#]/, // TODO: Combine w/ max-len pattern?
- DEFAULTS = {
- ignorePattern: null,
- ignoreInlineComments: false,
- ignoreConsecutiveComments: false
- };
+ MAYBE_URL = /^\s*[^:/?#\s]+:\/\/[^?#]/; // TODO: Combine w/ max-len pattern?
/*
* Base schema body for defining the basic capitalization rule, ignorePattern,
@@ -33,17 +28,27 @@ const SCHEMA_BODY = {
type: "object",
properties: {
ignorePattern: {
- type: "string"
+ type: "string",
+ default: ""
},
ignoreInlineComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreConsecutiveComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
};
+const DEFAULTS = Object.keys(SCHEMA_BODY.properties).reduce(
+ (obj, current) => {
+ obj[current] = SCHEMA_BODY.properties[current].default;
+ return obj;
+ },
+ {}
+);
/**
* Get normalized options for either block or line comments from the given
@@ -59,11 +64,7 @@ const SCHEMA_BODY = {
* @param {string} which Either "line" or "block".
* @returns {Object} The normalized options.
*/
-function getNormalizedOptions(rawOptions, which) {
- if (!rawOptions) {
- return Object.assign({}, DEFAULTS);
- }
-
+function getNormalizedOptions(rawOptions = {}, which) {
return Object.assign({}, DEFAULTS, rawOptions[which] || rawOptions);
}
diff --git a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js
index a15ab6b89e..0eb1da87f4 100644
--- a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js
+++ b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js
@@ -38,7 +38,7 @@ module.exports = {
}
},
create(context) {
- const config = context.options[0] ? Object.assign({}, context.options[0]) : {};
+ const config = Object.assign({}, context.options[0]);
const exceptMethods = new Set(config.exceptMethods || []);
const stack = [];
diff --git a/tools/node_modules/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js
index 2db0035b54..a9f89676a4 100644
--- a/tools/node_modules/eslint/lib/rules/comma-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/comma-spacing.js
@@ -28,10 +28,12 @@ module.exports = {
type: "object",
properties: {
before: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
after: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -50,8 +52,8 @@ module.exports = {
const tokensAndComments = sourceCode.tokensAndComments;
const options = {
- before: context.options[0] ? !!context.options[0].before : false,
- after: context.options[0] ? !!context.options[0].after : true
+ before: context.options[0] ? context.options[0].before : false,
+ after: context.options[0] ? context.options[0].after : true
};
//--------------------------------------------------------------------------
@@ -118,6 +120,10 @@ module.exports = {
report(reportItem, "before", tokens.left);
}
+ if (tokens.right && astUtils.isClosingParenToken(tokens.right)) {
+ return;
+ }
+
if (tokens.right && !options.after && tokens.right.type === "Line") {
return;
}
diff --git a/tools/node_modules/eslint/lib/rules/complexity.js b/tools/node_modules/eslint/lib/rules/complexity.js
index af583c0279..9f791e6de7 100644
--- a/tools/node_modules/eslint/lib/rules/complexity.js
+++ b/tools/node_modules/eslint/lib/rules/complexity.js
@@ -41,11 +41,13 @@ module.exports = {
properties: {
maximum: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 20
},
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 20
}
},
additionalProperties: false
@@ -63,13 +65,9 @@ module.exports = {
const option = context.options[0];
let THRESHOLD = 20;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") {
- THRESHOLD = option.maximum;
- }
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
- THRESHOLD = option.max;
- }
- if (typeof option === "number") {
+ if (typeof option === "object") {
+ THRESHOLD = option.maximum || option.max;
+ } else if (typeof option === "number") {
THRESHOLD = option;
}
diff --git a/tools/node_modules/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js
index ffd7ef2058..68f9f9d8fb 100644
--- a/tools/node_modules/eslint/lib/rules/consistent-return.js
+++ b/tools/node_modules/eslint/lib/rules/consistent-return.js
@@ -66,7 +66,8 @@ module.exports = {
type: "object",
properties: {
treatUndefinedAsUnspecified: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/dot-notation.js b/tools/node_modules/eslint/lib/rules/dot-notation.js
index 55ccea4ce3..a1b091da0e 100644
--- a/tools/node_modules/eslint/lib/rules/dot-notation.js
+++ b/tools/node_modules/eslint/lib/rules/dot-notation.js
@@ -33,10 +33,12 @@ module.exports = {
type: "object",
properties: {
allowKeywords: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
allowPattern: {
- type: "string"
+ type: "string",
+ default: ""
}
},
additionalProperties: false
@@ -53,7 +55,7 @@ module.exports = {
create(context) {
const options = context.options[0] || {};
- const allowKeywords = options.allowKeywords === void 0 || !!options.allowKeywords;
+ const allowKeywords = options.allowKeywords === void 0 || options.allowKeywords;
const sourceCode = context.getSourceCode();
let allowPattern;
diff --git a/tools/node_modules/eslint/lib/rules/eqeqeq.js b/tools/node_modules/eslint/lib/rules/eqeqeq.js
index 3e8a392cf6..a52de67d75 100644
--- a/tools/node_modules/eslint/lib/rules/eqeqeq.js
+++ b/tools/node_modules/eslint/lib/rules/eqeqeq.js
@@ -38,7 +38,8 @@ module.exports = {
type: "object",
properties: {
null: {
- enum: ["always", "never", "ignore"]
+ enum: ["always", "never", "ignore"],
+ default: "always"
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/func-call-spacing.js b/tools/node_modules/eslint/lib/rules/func-call-spacing.js
index c49aa9e59f..62bba144e6 100644
--- a/tools/node_modules/eslint/lib/rules/func-call-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/func-call-spacing.js
@@ -50,7 +50,8 @@ module.exports = {
type: "object",
properties: {
allowNewlines: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/func-style.js b/tools/node_modules/eslint/lib/rules/func-style.js
index b7e368cbd2..e150b1a76f 100644
--- a/tools/node_modules/eslint/lib/rules/func-style.js
+++ b/tools/node_modules/eslint/lib/rules/func-style.js
@@ -27,7 +27,8 @@ module.exports = {
type: "object",
properties: {
allowArrowFunctions: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -43,7 +44,7 @@ module.exports = {
create(context) {
const style = context.options[0],
- allowArrowFunctions = context.options[1] && context.options[1].allowArrowFunctions === true,
+ allowArrowFunctions = context.options[1] && context.options[1].allowArrowFunctions,
enforceDeclarations = (style === "declaration"),
stack = [];
diff --git a/tools/node_modules/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js
index dc3d9d6b62..a1806c357b 100644
--- a/tools/node_modules/eslint/lib/rules/getter-return.js
+++ b/tools/node_modules/eslint/lib/rules/getter-return.js
@@ -60,7 +60,8 @@ module.exports = {
type: "object",
properties: {
allowImplicit: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/id-length.js b/tools/node_modules/eslint/lib/rules/id-length.js
index 1f9c696e2a..c8586ea348 100644
--- a/tools/node_modules/eslint/lib/rules/id-length.js
+++ b/tools/node_modules/eslint/lib/rules/id-length.js
@@ -26,10 +26,11 @@ module.exports = {
type: "object",
properties: {
min: {
- type: "number"
+ type: "integer",
+ default: 2
},
max: {
- type: "number"
+ type: "integer"
},
exceptions: {
type: "array",
diff --git a/tools/node_modules/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js
index 5dc86f8dbf..3978a5ef68 100644
--- a/tools/node_modules/eslint/lib/rules/id-match.js
+++ b/tools/node_modules/eslint/lib/rules/id-match.js
@@ -28,13 +28,16 @@ module.exports = {
type: "object",
properties: {
properties: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
onlyDeclarations: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreDestructuring: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
}
}
diff --git a/tools/node_modules/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js
index c30d1f1e7b..08b9250f05 100644
--- a/tools/node_modules/eslint/lib/rules/indent.js
+++ b/tools/node_modules/eslint/lib/rules/indent.js
@@ -518,7 +518,8 @@ module.exports = {
properties: {
SwitchCase: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 0
},
VariableDeclarator: {
oneOf: [
@@ -582,7 +583,8 @@ module.exports = {
ObjectExpression: ELEMENT_LIST_SCHEMA,
ImportDeclaration: ELEMENT_LIST_SCHEMA,
flatTernaryExpressions: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoredNodes: {
type: "array",
@@ -594,7 +596,8 @@ module.exports = {
}
},
ignoreComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -650,7 +653,7 @@ module.exports = {
}
if (context.options[1]) {
- lodash.merge(options, context.options[1]);
+ Object.assign(options, context.options[1]);
if (typeof options.VariableDeclarator === "number" || options.VariableDeclarator === "first") {
options.VariableDeclarator = {
diff --git a/tools/node_modules/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js
index 65197358e6..484cbef0a5 100644
--- a/tools/node_modules/eslint/lib/rules/init-declarations.js
+++ b/tools/node_modules/eslint/lib/rules/init-declarations.js
@@ -75,7 +75,8 @@ module.exports = {
type: "object",
properties: {
ignoreForLoopInit: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/key-spacing.js b/tools/node_modules/eslint/lib/rules/key-spacing.js
index c52a74d499..31ba9522e9 100644
--- a/tools/node_modules/eslint/lib/rules/key-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/key-spacing.js
@@ -148,16 +148,20 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
on: {
- enum: ["colon", "value"]
+ enum: ["colon", "value"],
+ default: "colon"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -165,13 +169,16 @@ module.exports = {
]
},
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -183,13 +190,16 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -206,16 +216,20 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
on: {
- enum: ["colon", "value"]
+ enum: ["colon", "value"],
+ default: "colon"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -223,13 +237,16 @@ module.exports = {
]
},
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -244,13 +261,16 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -259,13 +279,16 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -274,16 +297,20 @@ module.exports = {
type: "object",
properties: {
mode: {
- enum: ["strict", "minimum"]
+ enum: ["strict", "minimum"],
+ default: "strict"
},
on: {
- enum: ["colon", "value"]
+ enum: ["colon", "value"],
+ default: "colon"
},
beforeColon: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterColon: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js
index 833092e416..83ad628268 100644
--- a/tools/node_modules/eslint/lib/rules/keyword-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/keyword-spacing.js
@@ -80,16 +80,16 @@ module.exports = {
{
type: "object",
properties: {
- before: { type: "boolean" },
- after: { type: "boolean" },
+ before: { type: "boolean", default: true },
+ after: { type: "boolean", default: true },
overrides: {
type: "object",
properties: KEYS.reduce((retv, key) => {
retv[key] = {
type: "object",
properties: {
- before: { type: "boolean" },
- after: { type: "boolean" }
+ before: { type: "boolean", default: true },
+ after: { type: "boolean", default: true }
},
additionalProperties: false
};
@@ -228,9 +228,9 @@ module.exports = {
* Keys are keywords (there are for every keyword).
* Values are instances of `{"before": function, "after": function}`.
*/
- function parseOptions(options) {
- const before = !options || options.before !== false;
- const after = !options || options.after !== false;
+ function parseOptions(options = {}) {
+ const before = options.before !== false;
+ const after = options.after !== false;
const defaultValue = {
before: before ? expectSpaceBefore : unexpectSpaceBefore,
after: after ? expectSpaceAfter : unexpectSpaceAfter
diff --git a/tools/node_modules/eslint/lib/rules/line-comment-position.js b/tools/node_modules/eslint/lib/rules/line-comment-position.js
index 6d0ac6d2ba..132a8ad875 100644
--- a/tools/node_modules/eslint/lib/rules/line-comment-position.js
+++ b/tools/node_modules/eslint/lib/rules/line-comment-position.js
@@ -31,16 +31,19 @@ module.exports = {
type: "object",
properties: {
position: {
- enum: ["above", "beside"]
+ enum: ["above", "beside"],
+ default: "above"
},
ignorePattern: {
type: "string"
},
applyDefaultPatterns: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
applyDefaultIgnorePatterns: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -69,9 +72,9 @@ module.exports = {
ignorePattern = options.ignorePattern;
if (Object.prototype.hasOwnProperty.call(options, "applyDefaultIgnorePatterns")) {
- applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false;
+ applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns;
} else {
- applyDefaultIgnorePatterns = options.applyDefaultPatterns !== false;
+ applyDefaultIgnorePatterns = options.applyDefaultPatterns;
}
}
diff --git a/tools/node_modules/eslint/lib/rules/lines-around-comment.js b/tools/node_modules/eslint/lib/rules/lines-around-comment.js
index 62bef94831..0f9851f724 100644
--- a/tools/node_modules/eslint/lib/rules/lines-around-comment.js
+++ b/tools/node_modules/eslint/lib/rules/lines-around-comment.js
@@ -68,22 +68,28 @@ module.exports = {
type: "object",
properties: {
beforeBlockComment: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
afterBlockComment: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
beforeLineComment: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
afterLineComment: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowBlockStart: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowBlockEnd: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowClassStart: {
type: "boolean"
@@ -121,19 +127,13 @@ module.exports = {
create(context) {
- const options = context.options[0] ? Object.assign({}, context.options[0]) : {};
+ const options = Object.assign({}, context.options[0]);
const ignorePattern = options.ignorePattern;
const defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN;
const customIgnoreRegExp = new RegExp(ignorePattern);
const applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false;
-
- options.beforeLineComment = options.beforeLineComment || false;
- options.afterLineComment = options.afterLineComment || false;
options.beforeBlockComment = typeof options.beforeBlockComment !== "undefined" ? options.beforeBlockComment : true;
- options.afterBlockComment = options.afterBlockComment || false;
- options.allowBlockStart = options.allowBlockStart || false;
- options.allowBlockEnd = options.allowBlockEnd || false;
const sourceCode = context.getSourceCode();
diff --git a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js
index 2937d24f81..19ae8a6a29 100644
--- a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js
+++ b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js
@@ -31,7 +31,8 @@ module.exports = {
type: "object",
properties: {
exceptAfterSingleLine: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/max-depth.js b/tools/node_modules/eslint/lib/rules/max-depth.js
index 500e931881..3b997e21bc 100644
--- a/tools/node_modules/eslint/lib/rules/max-depth.js
+++ b/tools/node_modules/eslint/lib/rules/max-depth.js
@@ -32,11 +32,13 @@ module.exports = {
properties: {
maximum: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 4
},
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 4
}
},
additionalProperties: false
@@ -59,11 +61,8 @@ module.exports = {
option = context.options[0];
let maxDepth = 4;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") {
- maxDepth = option.maximum;
- }
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
- maxDepth = option.max;
+ if (typeof option === "object") {
+ maxDepth = option.maximum || option.max;
}
if (typeof option === "number") {
maxDepth = option;
diff --git a/tools/node_modules/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js
index d74373e9ea..f6f0b6d3ac 100644
--- a/tools/node_modules/eslint/lib/rules/max-len.js
+++ b/tools/node_modules/eslint/lib/rules/max-len.js
@@ -14,7 +14,8 @@ const OPTIONS_SCHEMA = {
properties: {
code: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 80
},
comments: {
type: "integer",
@@ -22,28 +23,35 @@ const OPTIONS_SCHEMA = {
},
tabWidth: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 4
},
ignorePattern: {
type: "string"
},
ignoreComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreStrings: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreUrls: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreTemplateLiterals: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreRegExpLiterals: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreTrailingComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -121,8 +129,7 @@ module.exports = {
}
// The options object must be the last option specified…
- const lastOption = context.options[context.options.length - 1];
- const options = typeof lastOption === "object" ? Object.create(lastOption) : {};
+ const options = Object.assign({}, context.options[context.options.length - 1]);
// …but max code length…
if (typeof context.options[0] === "number") {
diff --git a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js
index d1e4597a22..2a0e1a645a 100644
--- a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js
+++ b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js
@@ -19,16 +19,20 @@ const OPTIONS_SCHEMA = {
properties: {
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 50
},
skipComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
skipBlankLines: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
IIFEs: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -97,18 +101,10 @@ module.exports = {
let IIFEs = false;
if (typeof option === "object") {
- if (typeof option.max === "number") {
- maxLines = option.max;
- }
- if (typeof option.skipComments === "boolean") {
- skipComments = option.skipComments;
- }
- if (typeof option.skipBlankLines === "boolean") {
- skipBlankLines = option.skipBlankLines;
- }
- if (typeof option.IIFEs === "boolean") {
- IIFEs = option.IIFEs;
- }
+ maxLines = option.max;
+ skipComments = option.skipComments;
+ skipBlankLines = option.skipBlankLines;
+ IIFEs = option.IIFEs;
} else if (typeof option === "number") {
maxLines = option;
}
diff --git a/tools/node_modules/eslint/lib/rules/max-lines.js b/tools/node_modules/eslint/lib/rules/max-lines.js
index da7ddd8a88..0fae4ec2fa 100644
--- a/tools/node_modules/eslint/lib/rules/max-lines.js
+++ b/tools/node_modules/eslint/lib/rules/max-lines.js
@@ -38,13 +38,16 @@ module.exports = {
properties: {
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 300
},
skipComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
skipBlankLines: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -61,11 +64,9 @@ module.exports = {
const option = context.options[0];
let max = 300;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
+ if (typeof option === "object") {
max = option.max;
- }
-
- if (typeof option === "number") {
+ } else if (typeof option === "number") {
max = option;
}
@@ -86,7 +87,7 @@ module.exports = {
/**
* Returns the line numbers of a comment that don't have any code on the same line
* @param {Node} comment The comment node to check
- * @returns {int[]} The line numbers
+ * @returns {number[]} The line numbers
*/
function getLinesWithoutCode(comment) {
let start = comment.loc.start.line;
diff --git a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js
index 754fa168d3..cbbb0ed6c7 100644
--- a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js
+++ b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js
@@ -32,11 +32,13 @@ module.exports = {
properties: {
maximum: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 10
},
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 10
}
},
additionalProperties: false
@@ -57,13 +59,9 @@ module.exports = {
const option = context.options[0];
let THRESHOLD = 10;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") {
- THRESHOLD = option.maximum;
- }
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
- THRESHOLD = option.max;
- }
- if (typeof option === "number") {
+ if (typeof option === "object") {
+ THRESHOLD = option.maximum || option.max;
+ } else if (typeof option === "number") {
THRESHOLD = option;
}
diff --git a/tools/node_modules/eslint/lib/rules/max-params.js b/tools/node_modules/eslint/lib/rules/max-params.js
index e082ec8e98..5e1e558ab5 100644
--- a/tools/node_modules/eslint/lib/rules/max-params.js
+++ b/tools/node_modules/eslint/lib/rules/max-params.js
@@ -40,11 +40,13 @@ module.exports = {
properties: {
maximum: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 3
},
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 3
}
},
additionalProperties: false
@@ -62,11 +64,8 @@ module.exports = {
const option = context.options[0];
let numParams = 3;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") {
- numParams = option.maximum;
- }
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
- numParams = option.max;
+ if (typeof option === "object") {
+ numParams = option.maximum || option.max;
}
if (typeof option === "number") {
numParams = option;
diff --git a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js
index b834cedc03..444bdfa21a 100644
--- a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js
+++ b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js
@@ -31,7 +31,8 @@ module.exports = {
properties: {
max: {
type: "integer",
- minimum: 1
+ minimum: 1,
+ default: 1
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/max-statements.js b/tools/node_modules/eslint/lib/rules/max-statements.js
index b33ca42982..cd0e50ae39 100644
--- a/tools/node_modules/eslint/lib/rules/max-statements.js
+++ b/tools/node_modules/eslint/lib/rules/max-statements.js
@@ -40,11 +40,13 @@ module.exports = {
properties: {
maximum: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 10
},
max: {
type: "integer",
- minimum: 0
+ minimum: 0,
+ default: 10
}
},
additionalProperties: false
@@ -78,13 +80,9 @@ module.exports = {
topLevelFunctions = [];
let maxStatements = 10;
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") {
- maxStatements = option.maximum;
- }
- if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") {
- maxStatements = option.max;
- }
- if (typeof option === "number") {
+ if (typeof option === "object") {
+ maxStatements = option.maximum || option.max;
+ } else if (typeof option === "number") {
maxStatements = option;
}
diff --git a/tools/node_modules/eslint/lib/rules/new-cap.js b/tools/node_modules/eslint/lib/rules/new-cap.js
index 4a01dcfa7f..ab70fcfadd 100644
--- a/tools/node_modules/eslint/lib/rules/new-cap.js
+++ b/tools/node_modules/eslint/lib/rules/new-cap.js
@@ -88,10 +88,12 @@ module.exports = {
type: "object",
properties: {
newIsCap: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
capIsNew: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
newIsCapExceptions: {
type: "array",
@@ -112,7 +114,8 @@ module.exports = {
type: "string"
},
properties: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -126,7 +129,7 @@ module.exports = {
create(context) {
- const config = context.options[0] ? Object.assign({}, context.options[0]) : {};
+ const config = Object.assign({}, context.options[0]);
config.newIsCap = config.newIsCap !== false;
config.capIsNew = config.capIsNew !== false;
diff --git a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js
index 0bf2365de5..90b540c484 100644
--- a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js
+++ b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js
@@ -31,7 +31,8 @@ module.exports = {
ignoreChainWithDepth: {
type: "integer",
minimum: 1,
- maximum: 10
+ maximum: 10,
+ default: 2
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-bitwise.js b/tools/node_modules/eslint/lib/rules/no-bitwise.js
index df492937c0..a9c3360a7c 100644
--- a/tools/node_modules/eslint/lib/rules/no-bitwise.js
+++ b/tools/node_modules/eslint/lib/rules/no-bitwise.js
@@ -43,7 +43,8 @@ module.exports = {
uniqueItems: true
},
int32Hint: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js
index f18ec19453..79df9a5138 100644
--- a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js
+++ b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js
@@ -41,7 +41,7 @@ module.exports = {
schema: [{
type: "object",
properties: {
- allowParens: { type: "boolean" }
+ allowParens: { type: "boolean", default: false }
},
additionalProperties: false
}],
diff --git a/tools/node_modules/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js
index fb36207ebb..d6d0417429 100644
--- a/tools/node_modules/eslint/lib/rules/no-constant-condition.js
+++ b/tools/node_modules/eslint/lib/rules/no-constant-condition.js
@@ -32,7 +32,8 @@ module.exports = {
type: "object",
properties: {
checkLoops: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js
index 7d35b41b4d..03b5e2c123 100644
--- a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js
+++ b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js
@@ -113,7 +113,8 @@ module.exports = {
type: "object",
properties: {
includeExports: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-else-return.js b/tools/node_modules/eslint/lib/rules/no-else-return.js
index 5ba02de291..5c21fb1b3f 100644
--- a/tools/node_modules/eslint/lib/rules/no-else-return.js
+++ b/tools/node_modules/eslint/lib/rules/no-else-return.js
@@ -31,7 +31,8 @@ module.exports = {
type: "object",
properties: {
allowElseIf: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-empty.js b/tools/node_modules/eslint/lib/rules/no-empty.js
index 9d72969e67..2d55dee665 100644
--- a/tools/node_modules/eslint/lib/rules/no-empty.js
+++ b/tools/node_modules/eslint/lib/rules/no-empty.js
@@ -30,7 +30,8 @@ module.exports = {
type: "object",
properties: {
allowEmptyCatch: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js
index 39d91e776e..d4b79468f1 100644
--- a/tools/node_modules/eslint/lib/rules/no-eval.js
+++ b/tools/node_modules/eslint/lib/rules/no-eval.js
@@ -89,7 +89,7 @@ module.exports = {
{
type: "object",
properties: {
- allowIndirect: { type: "boolean" }
+ allowIndirect: { type: "boolean", default: false }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-parens.js b/tools/node_modules/eslint/lib/rules/no-extra-parens.js
index 3a21b69580..9f16e0e6cc 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js
@@ -44,11 +44,11 @@ module.exports = {
{
type: "object",
properties: {
- conditionalAssign: { type: "boolean" },
- nestedBinaryExpressions: { type: "boolean" },
- returnAssign: { type: "boolean" },
+ conditionalAssign: { type: "boolean", default: true },
+ nestedBinaryExpressions: { type: "boolean", default: true },
+ returnAssign: { type: "boolean", default: true },
ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] },
- enforceForArrowConditionals: { type: "boolean" }
+ enforceForArrowConditionals: { type: "boolean", default: true }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js
index 79cbe81c0b..dfd9d85415 100644
--- a/tools/node_modules/eslint/lib/rules/no-fallthrough.js
+++ b/tools/node_modules/eslint/lib/rules/no-fallthrough.js
@@ -69,7 +69,8 @@ module.exports = {
type: "object",
properties: {
commentPattern: {
- type: "string"
+ type: "string",
+ default: ""
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js
index 826d9398ca..d54c578646 100644
--- a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js
+++ b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js
@@ -21,9 +21,9 @@ const ALLOWABLE_OPERATORS = ["~", "!!", "+", "*"];
*/
function parseOptions(options) {
return {
- boolean: "boolean" in options ? Boolean(options.boolean) : true,
- number: "number" in options ? Boolean(options.number) : true,
- string: "string" in options ? Boolean(options.string) : true,
+ boolean: "boolean" in options ? options.boolean : true,
+ number: "number" in options ? options.number : true,
+ string: "string" in options ? options.string : true,
allow: options.allow || []
};
}
@@ -167,13 +167,16 @@ module.exports = {
type: "object",
properties: {
boolean: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
number: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
string: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
allow: {
type: "array",
diff --git a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js
index 90d1a79a1c..ddbfd1c91c 100644
--- a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js
+++ b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js
@@ -41,16 +41,20 @@ module.exports = {
type: "object",
properties: {
skipComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
skipStrings: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
skipTemplates: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
skipRegExps: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js
index 34db20725b..29580bd236 100644
--- a/tools/node_modules/eslint/lib/rules/no-labels.js
+++ b/tools/node_modules/eslint/lib/rules/no-labels.js
@@ -30,10 +30,12 @@ module.exports = {
type: "object",
properties: {
allowLoop: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowSwitch: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -43,8 +45,8 @@ module.exports = {
create(context) {
const options = context.options[0];
- const allowLoop = Boolean(options && options.allowLoop);
- const allowSwitch = Boolean(options && options.allowSwitch);
+ const allowLoop = options && options.allowLoop;
+ const allowSwitch = options && options.allowSwitch;
let scopeInfo = null;
/**
diff --git a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js
index 84c08dfb08..2c6ea61e28 100644
--- a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js
+++ b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js
@@ -24,10 +24,12 @@ module.exports = {
type: "object",
properties: {
detectObjects: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
enforceConst: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignore: {
type: "array",
@@ -37,7 +39,8 @@ module.exports = {
uniqueItems: true
},
ignoreArrayIndexes: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js
index 22ed65f5b1..2b603a86df 100644
--- a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js
+++ b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js
@@ -42,10 +42,10 @@ const TARGET_NODE_TYPE = /^(?:Binary|Logical)Expression$/;
* @param {Object|undefined} options - A options object to normalize.
* @returns {Object} Normalized option object.
*/
-function normalizeOptions(options) {
- const hasGroups = (options && options.groups && options.groups.length > 0);
+function normalizeOptions(options = {}) {
+ const hasGroups = options.groups && options.groups.length > 0;
const groups = hasGroups ? options.groups : DEFAULT_GROUPS;
- const allowSamePrecedence = (options && options.allowSamePrecedence) !== false;
+ const allowSamePrecedence = options.allowSamePrecedence !== false;
return {
groups,
@@ -95,7 +95,8 @@ module.exports = {
uniqueItems: true
},
allowSamePrecedence: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js
index 438ac668a8..5b07a5f293 100644
--- a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js
+++ b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js
@@ -30,10 +30,12 @@ module.exports = {
type: "object",
properties: {
grouping: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowCall: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js
index f1792c31ed..c5fb074034 100644
--- a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js
+++ b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js
@@ -38,7 +38,8 @@ module.exports = {
additionalProperties: false
},
ignoreEOLComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-param-reassign.js b/tools/node_modules/eslint/lib/rules/no-param-reassign.js
index 349345c148..83760edb8c 100644
--- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js
+++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js
@@ -55,7 +55,7 @@ module.exports = {
},
create(context) {
- const props = context.options[0] && Boolean(context.options[0].props);
+ const props = context.options[0] && context.options[0].props;
const ignoredPropertyAssignmentsFor = context.options[0] && context.options[0].ignorePropertyModificationsFor || [];
/**
diff --git a/tools/node_modules/eslint/lib/rules/no-plusplus.js b/tools/node_modules/eslint/lib/rules/no-plusplus.js
index 4c854de1a0..1d122dcd31 100644
--- a/tools/node_modules/eslint/lib/rules/no-plusplus.js
+++ b/tools/node_modules/eslint/lib/rules/no-plusplus.js
@@ -26,7 +26,8 @@ module.exports = {
type: "object",
properties: {
allowForLoopAfterthoughts: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js
index e88436d7c5..4d689cc613 100644
--- a/tools/node_modules/eslint/lib/rules/no-redeclare.js
+++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js
@@ -24,7 +24,7 @@ module.exports = {
{
type: "object",
properties: {
- builtinGlobals: { type: "boolean" }
+ builtinGlobals: { type: "boolean", default: false }
},
additionalProperties: false
}
@@ -33,7 +33,7 @@ module.exports = {
create(context) {
const options = {
- builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals)
+ builtinGlobals: context.options[0] && context.options[0].builtinGlobals
};
/**
diff --git a/tools/node_modules/eslint/lib/rules/no-self-assign.js b/tools/node_modules/eslint/lib/rules/no-self-assign.js
index d493855efe..8bc7afbe38 100644
--- a/tools/node_modules/eslint/lib/rules/no-self-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-self-assign.js
@@ -179,7 +179,8 @@ module.exports = {
type: "object",
properties: {
props: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js
index 9bdd508680..f09f3767da 100644
--- a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js
+++ b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js
@@ -4,6 +4,19 @@
*/
"use strict";
+/**
+ * Determines if a variable safely shadows undefined.
+ * This is the case when a variable named `undefined` is never assigned to a value (i.e. it always shares the same value
+ * as the global).
+ * @param {eslintScope.Variable} variable The variable to check
+ * @returns {boolean} true if this variable safely shadows `undefined`
+ */
+function safelyShadowsUndefined(variable) {
+ return variable.name === "undefined" &&
+ variable.references.every(ref => !ref.isWrite()) &&
+ variable.defs.every(def => def.node.type === "VariableDeclarator" && def.node.init === null);
+}
+
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@@ -24,12 +37,13 @@ module.exports = {
create(context) {
- const RESTRICTED = ["undefined", "NaN", "Infinity", "arguments", "eval"];
+
+ const RESTRICTED = new Set(["undefined", "NaN", "Infinity", "arguments", "eval"]);
return {
"VariableDeclaration, :function, CatchClause"(node) {
for (const variable of context.getDeclaredVariables(node)) {
- if (variable.defs.length > 0 && RESTRICTED.includes(variable.name)) {
+ if (variable.defs.length > 0 && RESTRICTED.has(variable.name) && !safelyShadowsUndefined(variable)) {
context.report({
node: variable.defs[0].name,
message: "Shadowing of global property '{{idName}}'.",
diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js
index f910230d6a..5f617e52a7 100644
--- a/tools/node_modules/eslint/lib/rules/no-shadow.js
+++ b/tools/node_modules/eslint/lib/rules/no-shadow.js
@@ -30,8 +30,8 @@ module.exports = {
{
type: "object",
properties: {
- builtinGlobals: { type: "boolean" },
- hoist: { enum: ["all", "functions", "never"] },
+ builtinGlobals: { type: "boolean", default: false },
+ hoist: { enum: ["all", "functions", "never"], default: "functions" },
allow: {
type: "array",
items: {
@@ -47,7 +47,7 @@ module.exports = {
create(context) {
const options = {
- builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals),
+ builtinGlobals: context.options[0] && context.options[0].builtinGlobals,
hoist: (context.options[0] && context.options[0].hoist) || "functions",
allow: (context.options[0] && context.options[0].allow) || []
};
diff --git a/tools/node_modules/eslint/lib/rules/no-sync.js b/tools/node_modules/eslint/lib/rules/no-sync.js
index a0096e3d04..578bac96d3 100644
--- a/tools/node_modules/eslint/lib/rules/no-sync.js
+++ b/tools/node_modules/eslint/lib/rules/no-sync.js
@@ -27,7 +27,8 @@ module.exports = {
type: "object",
properties: {
allowAtRootLevel: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js
index 0002f55929..91fb000796 100644
--- a/tools/node_modules/eslint/lib/rules/no-tabs.js
+++ b/tools/node_modules/eslint/lib/rules/no-tabs.js
@@ -30,7 +30,8 @@ module.exports = {
type: "object",
properties: {
allowIndentationTabs: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js
index 18f0340ef0..1f0b53aca2 100644
--- a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js
+++ b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js
@@ -32,10 +32,12 @@ module.exports = {
type: "object",
properties: {
skipBlankLines: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreComments: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -52,7 +54,7 @@ module.exports = {
const options = context.options[0] || {},
skipBlankLines = options.skipBlankLines || false,
- ignoreComments = typeof options.ignoreComments === "boolean" && options.ignoreComments;
+ ignoreComments = options.ignoreComments || false;
/**
* Report the error message
diff --git a/tools/node_modules/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js
index e6cd152761..6b5140819b 100644
--- a/tools/node_modules/eslint/lib/rules/no-undef.js
+++ b/tools/node_modules/eslint/lib/rules/no-undef.js
@@ -39,7 +39,8 @@ module.exports = {
type: "object",
properties: {
typeof: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js
index 926803b992..3f59815b57 100644
--- a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js
+++ b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js
@@ -31,13 +31,16 @@ module.exports = {
}
},
allowAfterThis: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowAfterSuper: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
enforceInMethodNames: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js
index 3a7dd5fad7..e75a36430f 100644
--- a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js
+++ b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js
@@ -38,7 +38,8 @@ module.exports = {
type: "object",
properties: {
defaultAssignment: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js
index 854298b411..25c21775b0 100644
--- a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js
+++ b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js
@@ -24,13 +24,16 @@ module.exports = {
type: "object",
properties: {
allowShortCircuit: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowTernary: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowTaggedTemplates: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/no-unused-vars.js b/tools/node_modules/eslint/lib/rules/no-unused-vars.js
index e76e325103..e56ba221bb 100644
--- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js
+++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js
@@ -37,22 +37,26 @@ module.exports = {
type: "object",
properties: {
vars: {
- enum: ["all", "local"]
+ enum: ["all", "local"],
+ default: "all"
},
varsIgnorePattern: {
type: "string"
},
args: {
- enum: ["all", "after-used", "none"]
+ enum: ["all", "after-used", "none"],
+ default: "after-used"
},
ignoreRestSiblings: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
argsIgnorePattern: {
type: "string"
},
caughtErrors: {
- enum: ["all", "none"]
+ enum: ["all", "none"],
+ default: "none"
},
caughtErrorsIgnorePattern: {
type: "string"
diff --git a/tools/node_modules/eslint/lib/rules/no-use-before-define.js b/tools/node_modules/eslint/lib/rules/no-use-before-define.js
index 500cd3a410..e0b2d23a7e 100644
--- a/tools/node_modules/eslint/lib/rules/no-use-before-define.js
+++ b/tools/node_modules/eslint/lib/rules/no-use-before-define.js
@@ -154,9 +154,9 @@ module.exports = {
{
type: "object",
properties: {
- functions: { type: "boolean" },
- classes: { type: "boolean" },
- variables: { type: "boolean" }
+ functions: { type: "boolean", default: true },
+ classes: { type: "boolean", default: true },
+ variables: { type: "boolean", default: true }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-rename.js b/tools/node_modules/eslint/lib/rules/no-useless-rename.js
index 337f875b45..c1860645ea 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-rename.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-rename.js
@@ -26,9 +26,9 @@ module.exports = {
{
type: "object",
properties: {
- ignoreDestructuring: { type: "boolean" },
- ignoreImport: { type: "boolean" },
- ignoreExport: { type: "boolean" }
+ ignoreDestructuring: { type: "boolean", default: false },
+ ignoreImport: { type: "boolean", default: false },
+ ignoreExport: { type: "boolean", default: false }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/object-curly-newline.js b/tools/node_modules/eslint/lib/rules/object-curly-newline.js
index d1a6bc20f6..d45620d53c 100644
--- a/tools/node_modules/eslint/lib/rules/object-curly-newline.js
+++ b/tools/node_modules/eslint/lib/rules/object-curly-newline.js
@@ -26,14 +26,16 @@ const OPTION_VALUE = {
type: "object",
properties: {
multiline: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
minProperties: {
type: "integer",
minimum: 0
},
consistent: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false,
@@ -59,9 +61,9 @@ function normalizeOptionValue(value) {
} else if (value === "never") {
minProperties = Number.POSITIVE_INFINITY;
} else {
- multiline = Boolean(value.multiline);
+ multiline = value.multiline;
minProperties = value.minProperties || Number.POSITIVE_INFINITY;
- consistent = Boolean(value.consistent);
+ consistent = value.consistent;
}
} else {
consistent = true;
diff --git a/tools/node_modules/eslint/lib/rules/object-property-newline.js b/tools/node_modules/eslint/lib/rules/object-property-newline.js
index 3e2c017157..bf777b5ff6 100644
--- a/tools/node_modules/eslint/lib/rules/object-property-newline.js
+++ b/tools/node_modules/eslint/lib/rules/object-property-newline.js
@@ -25,10 +25,12 @@ module.exports = {
type: "object",
properties: {
allowAllPropertiesOnSameLine: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowMultiplePropertiesPerLine: { // Deprecated
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -40,7 +42,7 @@ module.exports = {
create(context) {
const allowSameLine = context.options[0] && (
- (Boolean(context.options[0].allowAllPropertiesOnSameLine) || Boolean(context.options[0].allowMultiplePropertiesPerLine)) // Deprecated
+ (context.options[0].allowAllPropertiesOnSameLine || context.options[0].allowMultiplePropertiesPerLine /* Deprecated */)
);
const errorMessage = allowSameLine
? "Object properties must go on a new line if they aren't all on the same line."
diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js
index 31010f0e73..98917fb6ee 100644
--- a/tools/node_modules/eslint/lib/rules/object-shorthand.js
+++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js
@@ -57,7 +57,8 @@ module.exports = {
type: "object",
properties: {
avoidQuotes: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -76,13 +77,16 @@ module.exports = {
type: "object",
properties: {
ignoreConstructors: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
avoidQuotes: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
avoidExplicitReturnArrows: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/one-var.js b/tools/node_modules/eslint/lib/rules/one-var.js
index 0e9dff4165..5a5c71b187 100644
--- a/tools/node_modules/eslint/lib/rules/one-var.js
+++ b/tools/node_modules/eslint/lib/rules/one-var.js
@@ -32,16 +32,20 @@ module.exports = {
type: "object",
properties: {
separateRequires: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
var: {
- enum: ["always", "never", "consecutive"]
+ enum: ["always", "never", "consecutive"],
+ default: "always"
},
let: {
- enum: ["always", "never", "consecutive"]
+ enum: ["always", "never", "consecutive"],
+ default: "always"
},
const: {
- enum: ["always", "never", "consecutive"]
+ enum: ["always", "never", "consecutive"],
+ default: "always"
}
},
additionalProperties: false
@@ -76,42 +80,16 @@ module.exports = {
options.let = { uninitialized: mode, initialized: mode };
options.const = { uninitialized: mode, initialized: mode };
} else if (typeof mode === "object") { // options configuration is an object
- if (Object.prototype.hasOwnProperty.call(mode, "separateRequires")) {
- options.separateRequires = !!mode.separateRequires;
- }
- if (Object.prototype.hasOwnProperty.call(mode, "var")) {
- options.var = { uninitialized: mode.var, initialized: mode.var };
- }
- if (Object.prototype.hasOwnProperty.call(mode, "let")) {
- options.let = { uninitialized: mode.let, initialized: mode.let };
- }
- if (Object.prototype.hasOwnProperty.call(mode, "const")) {
- options.const = { uninitialized: mode.const, initialized: mode.const };
- }
+ options.separateRequires = mode.separateRequires;
+ options.var = { uninitialized: mode.var, initialized: mode.var };
+ options.let = { uninitialized: mode.let, initialized: mode.let };
+ options.const = { uninitialized: mode.const, initialized: mode.const };
if (Object.prototype.hasOwnProperty.call(mode, "uninitialized")) {
- if (!options.var) {
- options.var = {};
- }
- if (!options.let) {
- options.let = {};
- }
- if (!options.const) {
- options.const = {};
- }
options.var.uninitialized = mode.uninitialized;
options.let.uninitialized = mode.uninitialized;
options.const.uninitialized = mode.uninitialized;
}
if (Object.prototype.hasOwnProperty.call(mode, "initialized")) {
- if (!options.var) {
- options.var = {};
- }
- if (!options.let) {
- options.let = {};
- }
- if (!options.const) {
- options.const = {};
- }
options.var.initialized = mode.initialized;
options.let.initialized = mode.initialized;
options.const.initialized = mode.initialized;
@@ -257,7 +235,9 @@ module.exports = {
if (currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS) {
if (currentScope.uninitialized || currentScope.initialized) {
- return false;
+ if (!hasRequires) {
+ return false;
+ }
}
}
@@ -268,7 +248,9 @@ module.exports = {
}
if (declarationCounts.initialized > 0) {
if (currentOptions.initialized === MODE_ALWAYS && currentScope.initialized) {
- return false;
+ if (!hasRequires) {
+ return false;
+ }
}
}
if (currentScope.required && hasRequires) {
@@ -340,7 +322,11 @@ module.exports = {
* y`
* ^ afterComma
*/
- if (afterComma.loc.start.line > tokenAfterDeclarator.loc.end.line || afterComma.type === "Line" || afterComma.type === "Block") {
+ if (
+ afterComma.loc.start.line > tokenAfterDeclarator.loc.end.line ||
+ afterComma.type === "Line" ||
+ afterComma.type === "Block"
+ ) {
let lastComment = afterComma;
while (lastComment.type === "Line" || lastComment.type === "Block") {
@@ -349,7 +335,7 @@ module.exports = {
return fixer.replaceTextRange(
[tokenAfterDeclarator.range[0], lastComment.range[0]],
- `;\n${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}\n${declaration.kind} `
+ `;${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}${declaration.kind} `
);
}
diff --git a/tools/node_modules/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js
index 7c0b56ba7f..e4dd37f4cd 100644
--- a/tools/node_modules/eslint/lib/rules/padded-blocks.js
+++ b/tools/node_modules/eslint/lib/rules/padded-blocks.js
@@ -6,6 +6,12 @@
"use strict";
//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../util/ast-utils");
+
+//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@@ -45,32 +51,45 @@ module.exports = {
minProperties: 1
}
]
+ },
+ {
+ type: "object",
+ properties: {
+ allowSingleLineBlocks: {
+ type: "boolean"
+ }
+ }
}
]
},
create(context) {
const options = {};
- const config = context.options[0] || "always";
+ const typeOptions = context.options[0] || "always";
+ const exceptOptions = context.options[1] || {};
- if (typeof config === "string") {
- const shouldHavePadding = config === "always";
+ if (typeof typeOptions === "string") {
+ const shouldHavePadding = typeOptions === "always";
options.blocks = shouldHavePadding;
options.switches = shouldHavePadding;
options.classes = shouldHavePadding;
} else {
- if (Object.prototype.hasOwnProperty.call(config, "blocks")) {
- options.blocks = config.blocks === "always";
+ if (Object.prototype.hasOwnProperty.call(typeOptions, "blocks")) {
+ options.blocks = typeOptions.blocks === "always";
}
- if (Object.prototype.hasOwnProperty.call(config, "switches")) {
- options.switches = config.switches === "always";
+ if (Object.prototype.hasOwnProperty.call(typeOptions, "switches")) {
+ options.switches = typeOptions.switches === "always";
}
- if (Object.prototype.hasOwnProperty.call(config, "classes")) {
- options.classes = config.classes === "always";
+ if (Object.prototype.hasOwnProperty.call(typeOptions, "classes")) {
+ options.classes = typeOptions.classes === "always";
}
}
+ if (Object.prototype.hasOwnProperty.call(exceptOptions, "allowSingleLineBlocks")) {
+ options.allowSingleLineBlocks = exceptOptions.allowSingleLineBlocks === true;
+ }
+
const ALWAYS_MESSAGE = "Block must be padded by blank lines.",
NEVER_MESSAGE = "Block must not be padded by blank lines.";
@@ -177,6 +196,10 @@ module.exports = {
blockHasTopPadding = isPaddingBetweenTokens(tokenBeforeFirst, firstBlockToken),
blockHasBottomPadding = isPaddingBetweenTokens(lastBlockToken, tokenAfterLast);
+ if (options.allowSingleLineBlocks && astUtils.isTokenOnSameLine(tokenBeforeFirst, tokenAfterLast)) {
+ return;
+ }
+
if (requirePaddingFor(node)) {
if (!blockHasTopPadding) {
context.report({
diff --git a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
index b4bbf33f29..a0957399ea 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
@@ -146,10 +146,12 @@ module.exports = {
type: "object",
properties: {
allowNamedFunctions: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowUnboundThis: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js
index 5f75376c95..023f69cbd3 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-const.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-const.js
@@ -345,8 +345,8 @@ module.exports = {
{
type: "object",
properties: {
- destructuring: { enum: ["any", "all"] },
- ignoreReadBeforeAssign: { type: "boolean" }
+ destructuring: { enum: ["any", "all"], default: "any" },
+ ignoreReadBeforeAssign: { type: "boolean", default: false }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
index 119fae5608..c30c9170cd 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
@@ -19,6 +19,8 @@ module.exports = {
url: "https://eslint.org/docs/rules/prefer-destructuring"
},
+ fixable: "code",
+
schema: [
{
@@ -34,10 +36,12 @@ module.exports = {
type: "object",
properties: {
array: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
object: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -46,10 +50,12 @@ module.exports = {
type: "object",
properties: {
array: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
object: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -61,10 +67,12 @@ module.exports = {
type: "object",
properties: {
array: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
object: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -75,7 +83,8 @@ module.exports = {
type: "object",
properties: {
enforceForRenamedProperties: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -130,10 +139,55 @@ module.exports = {
*
* @param {ASTNode} reportNode the node to report
* @param {string} type the type of destructuring that should have been done
+ * @param {Function|null} fix the fix function or null to pass to context.report
* @returns {void}
*/
- function report(reportNode, type) {
- context.report({ node: reportNode, message: "Use {{type}} destructuring.", data: { type } });
+ function report(reportNode, type, fix) {
+ context.report({
+ node: reportNode,
+ message: "Use {{type}} destructuring.",
+ data: { type },
+ fix
+ });
+ }
+
+ /**
+ * Determines if a node should be fixed into object destructuring
+ *
+ * The fixer only fixes the simplest case of object destructuring,
+ * like: `let x = a.x`;
+ *
+ * Assignment expression is not fixed.
+ * Array destructuring is not fixed.
+ * Renamed property is not fixed.
+ *
+ * @param {ASTNode} node the the node to evaluate
+ * @returns {boolean} whether or not the node should be fixed
+ */
+ function shouldFix(node) {
+ return node.type === "VariableDeclarator" &&
+ node.id.type === "Identifier" &&
+ node.init.type === "MemberExpression" &&
+ node.id.name === node.init.property.name;
+ }
+
+ /**
+ * Fix a node into object destructuring.
+ * This function only handles the simplest case of object destructuring,
+ * see {@link shouldFix}.
+ *
+ * @param {SourceCodeFixer} fixer the fixer object
+ * @param {ASTNode} node the node to be fixed.
+ * @returns {Object} a fix for the node
+ */
+ function fixIntoObjectDestructuring(fixer, node) {
+ const rightNode = node.init;
+ const sourceCode = context.getSourceCode();
+
+ return fixer.replaceText(
+ node,
+ `{${rightNode.property.name}} = ${sourceCode.getText(rightNode.object)}`
+ );
}
/**
@@ -155,13 +209,17 @@ module.exports = {
if (isArrayIndexAccess(rightNode)) {
if (shouldCheck(reportNode.type, "array")) {
- report(reportNode, "array");
+ report(reportNode, "array", null);
}
return;
}
+ const fix = shouldFix(reportNode)
+ ? fixer => fixIntoObjectDestructuring(fixer, reportNode)
+ : null;
+
if (shouldCheck(reportNode.type, "object") && enforceForRenamedProperties) {
- report(reportNode, "object");
+ report(reportNode, "object", fix);
return;
}
@@ -172,7 +230,7 @@ module.exports = {
(property.type === "Literal" && leftNode.name === property.value) ||
(property.type === "Identifier" && leftNode.name === property.name && !rightNode.computed)
) {
- report(reportNode, "object");
+ report(reportNode, "object", fix);
}
}
}
diff --git a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js
index 0db5ae874c..275e705f6d 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js
@@ -27,7 +27,7 @@ module.exports = {
{
type: "object",
properties: {
- allowEmptyReject: { type: "boolean" }
+ allowEmptyReject: { type: "boolean", default: false }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js
index 790fd3b82a..5f3a477329 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-spread.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-spread.js
@@ -59,7 +59,7 @@ module.exports = {
},
schema: [],
- fixable: "code"
+ fixable: null
},
create(context) {
@@ -78,18 +78,7 @@ module.exports = {
if (isValidThisArg(expectedThis, thisArg, sourceCode)) {
context.report({
node,
- message: "Use the spread operator instead of '.apply()'.",
- fix(fixer) {
- if (expectedThis && expectedThis.type !== "Identifier") {
-
- // Don't fix cases where the `this` value could be a computed expression.
- return null;
- }
-
- const propertyDot = sourceCode.getFirstTokenBetween(applied, node.callee.property, token => token.value === ".");
-
- return fixer.replaceTextRange([propertyDot.range[0], node.range[1]], `(...${sourceCode.getText(node.arguments[1])})`);
- }
+ message: "Use the spread operator instead of '.apply()'."
});
}
}
diff --git a/tools/node_modules/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js
index 7184bd34d3..f4582dd1f4 100644
--- a/tools/node_modules/eslint/lib/rules/quote-props.js
+++ b/tools/node_modules/eslint/lib/rules/quote-props.js
@@ -32,7 +32,8 @@ module.exports = {
type: "array",
items: [
{
- enum: ["always", "as-needed", "consistent", "consistent-as-needed"]
+ enum: ["always", "as-needed", "consistent", "consistent-as-needed"],
+ default: "always"
}
],
minItems: 0,
@@ -42,19 +43,23 @@ module.exports = {
type: "array",
items: [
{
- enum: ["always", "as-needed", "consistent", "consistent-as-needed"]
+ enum: ["always", "as-needed", "consistent", "consistent-as-needed"],
+ default: "always"
},
{
type: "object",
properties: {
keywords: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
unnecessary: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
numbers: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js
index c3c0778224..e0797f9e8b 100644
--- a/tools/node_modules/eslint/lib/rules/quotes.js
+++ b/tools/node_modules/eslint/lib/rules/quotes.js
@@ -100,10 +100,12 @@ module.exports = {
type: "object",
properties: {
avoidEscape: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
allowTemplateLiterals: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/require-jsdoc.js b/tools/node_modules/eslint/lib/rules/require-jsdoc.js
index 389bfb692b..416a22ce6c 100644
--- a/tools/node_modules/eslint/lib/rules/require-jsdoc.js
+++ b/tools/node_modules/eslint/lib/rules/require-jsdoc.js
@@ -23,22 +23,28 @@ module.exports = {
type: "object",
properties: {
ClassDeclaration: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
MethodDefinition: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
FunctionDeclaration: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
ArrowFunctionExpression: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
FunctionExpression: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
- additionalProperties: false
+ additionalProperties: false,
+ default: {}
}
},
additionalProperties: false
@@ -58,7 +64,7 @@ module.exports = {
ArrowFunctionExpression: false,
FunctionExpression: false
};
- const options = Object.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require || {});
+ const options = Object.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require);
/**
* Report the error message
diff --git a/tools/node_modules/eslint/lib/rules/semi-spacing.js b/tools/node_modules/eslint/lib/rules/semi-spacing.js
index 56ae687d85..3a6d8a052a 100644
--- a/tools/node_modules/eslint/lib/rules/semi-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/semi-spacing.js
@@ -29,10 +29,12 @@ module.exports = {
type: "object",
properties: {
before: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
after: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
@@ -48,12 +50,8 @@ module.exports = {
requireSpaceAfter = true;
if (typeof config === "object") {
- if (Object.prototype.hasOwnProperty.call(config, "before")) {
- requireSpaceBefore = config.before;
- }
- if (Object.prototype.hasOwnProperty.call(config, "after")) {
- requireSpaceAfter = config.after;
- }
+ requireSpaceBefore = config.before;
+ requireSpaceAfter = config.after;
}
/**
diff --git a/tools/node_modules/eslint/lib/rules/semi.js b/tools/node_modules/eslint/lib/rules/semi.js
index e8f4c959d4..f7bc0f5fd6 100644
--- a/tools/node_modules/eslint/lib/rules/semi.js
+++ b/tools/node_modules/eslint/lib/rules/semi.js
@@ -40,7 +40,8 @@ module.exports = {
type: "object",
properties: {
beforeStatementContinuationChars: {
- enum: ["always", "any", "never"]
+ enum: ["always", "any", "never"],
+ default: "any"
}
},
additionalProperties: false
@@ -58,7 +59,7 @@ module.exports = {
{
type: "object",
properties: {
- omitLastInOneLineBlock: { type: "boolean" }
+ omitLastInOneLineBlock: { type: "boolean", default: false }
},
additionalProperties: false
}
@@ -75,8 +76,8 @@ module.exports = {
const OPT_OUT_PATTERN = /^[-[(/+`]/; // One of [(/+-`
const options = context.options[1];
const never = context.options[0] === "never";
- const exceptOneLine = Boolean(options && options.omitLastInOneLineBlock);
- const beforeStatementContinuationChars = (options && options.beforeStatementContinuationChars) || "any";
+ const exceptOneLine = options && options.omitLastInOneLineBlock;
+ const beforeStatementContinuationChars = options && options.beforeStatementContinuationChars;
const sourceCode = context.getSourceCode();
//--------------------------------------------------------------------------
diff --git a/tools/node_modules/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js
index 1c0d134046..05e643ca06 100644
--- a/tools/node_modules/eslint/lib/rules/sort-imports.js
+++ b/tools/node_modules/eslint/lib/rules/sort-imports.js
@@ -25,7 +25,8 @@ module.exports = {
type: "object",
properties: {
ignoreCase: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
memberSyntaxSortOrder: {
type: "array",
@@ -37,10 +38,12 @@ module.exports = {
maxItems: 4
},
ignoreDeclarationSort: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
ignoreMemberSort: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js
index 0668e617d3..08bfcdf3d8 100644
--- a/tools/node_modules/eslint/lib/rules/sort-keys.js
+++ b/tools/node_modules/eslint/lib/rules/sort-keys.js
@@ -90,10 +90,12 @@ module.exports = {
type: "object",
properties: {
caseSensitive: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
natural: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -106,8 +108,8 @@ module.exports = {
// Parse options.
const order = context.options[0] || "asc";
const options = context.options[1];
- const insensitive = (options && options.caseSensitive) === false;
- const natual = Boolean(options && options.natural);
+ const insensitive = options && options.caseSensitive === false;
+ const natual = options && options.natural;
const isValidOrder = isValidOrders[
order + (insensitive ? "I" : "") + (natual ? "N" : "")
];
@@ -127,8 +129,12 @@ module.exports = {
stack = stack.upper;
},
+ SpreadElement() {
+ stack.prevName = null;
+ },
+
Property(node) {
- if (node.parent.type === "ObjectPattern" || node.parent.properties.some(n => n.type === "SpreadElement")) {
+ if (node.parent.type === "ObjectPattern") {
return;
}
diff --git a/tools/node_modules/eslint/lib/rules/sort-vars.js b/tools/node_modules/eslint/lib/rules/sort-vars.js
index b6a2c86779..e85c6534e3 100644
--- a/tools/node_modules/eslint/lib/rules/sort-vars.js
+++ b/tools/node_modules/eslint/lib/rules/sort-vars.js
@@ -25,7 +25,8 @@ module.exports = {
type: "object",
properties: {
ignoreCase: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js
index 64ba72bf9e..c0d8e509fd 100644
--- a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js
+++ b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js
@@ -37,13 +37,16 @@ module.exports = {
type: "object",
properties: {
anonymous: {
- enum: ["always", "never", "ignore"]
+ enum: ["always", "never", "ignore"],
+ default: "always"
},
named: {
- enum: ["always", "never", "ignore"]
+ enum: ["always", "never", "ignore"],
+ default: "always"
},
asyncArrow: {
- enum: ["always", "never", "ignore"]
+ enum: ["always", "never", "ignore"],
+ default: "always"
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/space-infix-ops.js b/tools/node_modules/eslint/lib/rules/space-infix-ops.js
index 254616d998..8d1d172c66 100644
--- a/tools/node_modules/eslint/lib/rules/space-infix-ops.js
+++ b/tools/node_modules/eslint/lib/rules/space-infix-ops.js
@@ -26,7 +26,8 @@ module.exports = {
type: "object",
properties: {
int32Hint: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/space-unary-ops.js b/tools/node_modules/eslint/lib/rules/space-unary-ops.js
index 046be22bec..779697b5b3 100644
--- a/tools/node_modules/eslint/lib/rules/space-unary-ops.js
+++ b/tools/node_modules/eslint/lib/rules/space-unary-ops.js
@@ -32,10 +32,12 @@ module.exports = {
type: "object",
properties: {
words: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
nonwords: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
overrides: {
type: "object",
@@ -58,7 +60,7 @@ module.exports = {
},
create(context) {
- const options = context.options && Array.isArray(context.options) && context.options[0] || { words: true, nonwords: false };
+ const options = context.options[0] || { words: true, nonwords: false };
const sourceCode = context.getSourceCode();
diff --git a/tools/node_modules/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js
index d4c86d27cf..63177eb1c7 100644
--- a/tools/node_modules/eslint/lib/rules/spaced-comment.js
+++ b/tools/node_modules/eslint/lib/rules/spaced-comment.js
@@ -215,7 +215,8 @@ module.exports = {
}
},
balanced: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js
index 9c7c0d589e..40154862d1 100644
--- a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js
@@ -30,8 +30,8 @@ module.exports = {
{
type: "object",
properties: {
- before: { type: "boolean" },
- after: { type: "boolean" }
+ before: { type: "boolean", default: false },
+ after: { type: "boolean", default: true }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js
index 515ba78b1d..46eb02211a 100644
--- a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js
+++ b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js
@@ -42,22 +42,27 @@ module.exports = {
}
},
requireReturn: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
requireParamDescription: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
requireReturnDescription: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
matchDescription: {
type: "string"
},
requireReturnType: {
- type: "boolean"
+ type: "boolean",
+ default: true
},
requireParamType: {
- type: "boolean"
+ type: "boolean",
+ default: true
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js
index 7fa2b89bd0..16b2a47d37 100644
--- a/tools/node_modules/eslint/lib/rules/valid-typeof.js
+++ b/tools/node_modules/eslint/lib/rules/valid-typeof.js
@@ -24,7 +24,8 @@ module.exports = {
type: "object",
properties: {
requireStringLiterals: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/rules/wrap-iife.js b/tools/node_modules/eslint/lib/rules/wrap-iife.js
index 628ebf532e..0e54157f10 100644
--- a/tools/node_modules/eslint/lib/rules/wrap-iife.js
+++ b/tools/node_modules/eslint/lib/rules/wrap-iife.js
@@ -34,7 +34,8 @@ module.exports = {
type: "object",
properties: {
functionPrototypeMethods: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -52,7 +53,7 @@ module.exports = {
create(context) {
const style = context.options[0] || "outside";
- const includeFunctionPrototypeMethods = (context.options[1] && context.options[1].functionPrototypeMethods) || false;
+ const includeFunctionPrototypeMethods = context.options[1] && context.options[1].functionPrototypeMethods;
const sourceCode = context.getSourceCode();
diff --git a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js
index 20b8e9ea91..17124dd6ec 100644
--- a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js
@@ -31,8 +31,8 @@ module.exports = {
{
type: "object",
properties: {
- before: { type: "boolean" },
- after: { type: "boolean" }
+ before: { type: "boolean", default: false },
+ after: { type: "boolean", default: true }
},
additionalProperties: false
}
diff --git a/tools/node_modules/eslint/lib/rules/yoda.js b/tools/node_modules/eslint/lib/rules/yoda.js
index 83c435a4f7..825634a79f 100644
--- a/tools/node_modules/eslint/lib/rules/yoda.js
+++ b/tools/node_modules/eslint/lib/rules/yoda.js
@@ -169,10 +169,12 @@ module.exports = {
type: "object",
properties: {
exceptRange: {
- type: "boolean"
+ type: "boolean",
+ default: false
},
onlyEquality: {
- type: "boolean"
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
diff --git a/tools/node_modules/eslint/lib/util/ajv.js b/tools/node_modules/eslint/lib/util/ajv.js
index 285176da87..ecf0ebd172 100644
--- a/tools/node_modules/eslint/lib/util/ajv.js
+++ b/tools/node_modules/eslint/lib/util/ajv.js
@@ -17,6 +17,7 @@ const Ajv = require("ajv"),
const ajv = new Ajv({
meta: false,
+ useDefaults: true,
validateSchema: false,
missingRefs: "ignore",
verbose: true,
diff --git a/tools/node_modules/eslint/node_modules/acorn/README.md b/tools/node_modules/eslint/node_modules/acorn/README.md
index e66dac31de..3e5f58d95d 100644
--- a/tools/node_modules/eslint/node_modules/acorn/README.md
+++ b/tools/node_modules/eslint/node_modules/acorn/README.md
@@ -5,7 +5,7 @@ A tiny, fast JavaScript parser written in JavaScript.
## Community
Acorn is open source software released under an
-[MIT license](https://github.com/acornjs/acorn/blob/master/LICENSE).
+[MIT license](https://github.com/acornjs/acorn/blob/master/acorn/LICENSE).
You are welcome to
[report bugs](https://github.com/acornjs/acorn/issues) or create pull
diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js
index e4a0fe3a3b..44d95c5fae 100644
--- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js
+++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js
@@ -254,7 +254,7 @@ function isNewLine(code, ecma2019String) {
return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))
}
-var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
+var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
@@ -272,6 +272,10 @@ var isArray = Array.isArray || (function (obj) { return (
toString.call(obj) === "[object Array]"
); });
+function wordsRegexp(words) {
+ return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")
+}
+
// These are used when `options.locations` is on, for the
// `startLoc` and `endLoc` properties.
@@ -460,24 +464,20 @@ var BIND_FUNCTION = 3;
var BIND_SIMPLE_CATCH = 4;
var BIND_OUTSIDE = 5; // Special case for function names as bound inside the function
-function keywordRegexp(words) {
- return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")
-}
-
var Parser = function Parser(options, input, startPos) {
this.options = options = getOptions(options);
this.sourceFile = options.sourceFile;
- this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);
+ this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);
var reserved = "";
if (!options.allowReserved) {
for (var v = options.ecmaVersion;; v--)
{ if (reserved = reservedWords[v]) { break } }
if (options.sourceType === "module") { reserved += " await"; }
}
- this.reservedWords = keywordRegexp(reserved);
+ this.reservedWords = wordsRegexp(reserved);
var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict;
- this.reservedWordsStrict = keywordRegexp(reservedStrict);
- this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + reservedWords.strictBind);
+ this.reservedWordsStrict = wordsRegexp(reservedStrict);
+ this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind);
this.input = String(input);
// Used to signal to callers of `readWord1` whether the word
@@ -526,9 +526,11 @@ var Parser = function Parser(options, input, startPos) {
this.potentialArrowAt = -1;
// Positions to delayed-check that yield/await does not exist in default parameters.
- this.yieldPos = this.awaitPos = 0;
+ this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;
// Labels in scope.
this.labels = [];
+ // Thus-far undefined exports.
+ this.undefinedExports = {};
// If enabled, skip leading hashbang line.
if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
@@ -605,7 +607,7 @@ pp.strictDirective = function(start) {
// Skip semicolon, if any.
skipWhiteSpace.lastIndex = start;
start += skipWhiteSpace.exec(this$1.input)[0].length;
- if (this$1.input[start] === ';')
+ if (this$1.input[start] === ";")
{ start++; }
}
};
@@ -747,6 +749,13 @@ pp$1.parseTopLevel = function(node) {
var stmt = this$1.parseStatement(null, true, exports);
node.body.push(stmt);
}
+ if (this.inModule)
+ { for (var i = 0, list = Object.keys(this$1.undefinedExports); i < list.length; i += 1)
+ {
+ var name = list[i];
+
+ this$1.raiseRecoverable(this$1.undefinedExports[name].start, ("Export '" + name + "' is not defined"));
+ } }
this.adaptDirectivePrologue(node.body);
this.next();
if (this.options.ecmaVersion >= 6) {
@@ -1238,8 +1247,9 @@ var FUNC_HANGING_STATEMENT = 2;
var FUNC_NULLABLE_ID = 4;
// Parse a function declaration or literal (depending on the
-// `isStatement` parameter).
+// `statement & FUNC_STATEMENT`).
+// Remove `allowExpressionBody` for 7.0.0, as it is only called with false
pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) {
this.initFunction(node);
if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {
@@ -1260,19 +1270,21 @@ pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) {
{ this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }
}
- var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
this.enterScope(functionFlags(node.async, node.generator));
if (!(statement & FUNC_STATEMENT))
{ node.id = this.type === types.name ? this.parseIdent() : null; }
this.parseFunctionParams(node);
- this.parseFunctionBody(node, allowExpressionBody);
+ this.parseFunctionBody(node, allowExpressionBody, false);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression")
};
@@ -1415,7 +1427,7 @@ pp$1.parseExport = function(node, exports) {
var fNode = this.startNode();
this.next();
if (isAsync) { this.next(); }
- node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync, true);
+ node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync);
} else if (this.type === types._class) {
var cNode = this.startNode();
node.declaration = this.parseClass(cNode, "nullableID");
@@ -1441,11 +1453,13 @@ pp$1.parseExport = function(node, exports) {
if (this.type !== types.string) { this.unexpected(); }
node.source = this.parseExprAtom();
} else {
- // check for keywords used as local names
for (var i = 0, list = node.specifiers; i < list.length; i += 1) {
+ // check for keywords used as local names
var spec = list[i];
this$1.checkUnreserved(spec.local);
+ // check if export is defined
+ this$1.checkLocalExport(spec.local);
}
node.source = null;
@@ -1624,7 +1638,7 @@ pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {
switch (node.type) {
case "Identifier":
if (this.inAsync && node.name === "await")
- { this.raise(node.start, "Can not use 'await' as identifier inside an async function"); }
+ { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); }
break
case "ObjectPattern":
@@ -2125,42 +2139,53 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
- for (var computed = (void 0);;) {
- if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {
- var node = this$1.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true);
- node.computed = !!computed;
- if (computed) { this$1.expect(types.bracketR); }
- base = this$1.finishNode(node, "MemberExpression");
- } else if (!noCalls && this$1.eat(types.parenL)) {
- var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos;
- this$1.yieldPos = 0;
- this$1.awaitPos = 0;
- var exprList = this$1.parseExprList(types.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors);
- if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(types.arrow)) {
- this$1.checkPatternErrors(refDestructuringErrors, false);
- this$1.checkYieldAwaitInDefaultParams();
- this$1.yieldPos = oldYieldPos;
- this$1.awaitPos = oldAwaitPos;
- return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true)
- }
- this$1.checkExpressionErrors(refDestructuringErrors, true);
- this$1.yieldPos = oldYieldPos || this$1.yieldPos;
- this$1.awaitPos = oldAwaitPos || this$1.awaitPos;
- var node$1 = this$1.startNodeAt(startPos, startLoc);
- node$1.callee = base;
- node$1.arguments = exprList;
- base = this$1.finishNode(node$1, "CallExpression");
- } else if (this$1.type === types.backQuote) {
- var node$2 = this$1.startNodeAt(startPos, startLoc);
- node$2.tag = base;
- node$2.quasi = this$1.parseTemplate({isTagged: true});
- base = this$1.finishNode(node$2, "TaggedTemplateExpression");
- } else {
- return base
+ while (true) {
+ var element = this$1.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow);
+ if (element === base || element.type === "ArrowFunctionExpression") { return element }
+ base = element;
+ }
+};
+
+pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) {
+ var computed = this.eat(types.bracketL);
+ if (computed || this.eat(types.dot)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.property = computed ? this.parseExpression() : this.parseIdent(true);
+ node.computed = !!computed;
+ if (computed) { this.expect(types.bracketR); }
+ base = this.finishNode(node, "MemberExpression");
+ } else if (!noCalls && this.eat(types.parenL)) {
+ var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
+ this.yieldPos = 0;
+ this.awaitPos = 0;
+ this.awaitIdentPos = 0;
+ var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);
+ if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) {
+ this.checkPatternErrors(refDestructuringErrors, false);
+ this.checkYieldAwaitInDefaultParams();
+ if (this.awaitIdentPos > 0)
+ { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); }
+ this.yieldPos = oldYieldPos;
+ this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
+ return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)
}
+ this.checkExpressionErrors(refDestructuringErrors, true);
+ this.yieldPos = oldYieldPos || this.yieldPos;
+ this.awaitPos = oldAwaitPos || this.awaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;
+ var node$1 = this.startNodeAt(startPos, startLoc);
+ node$1.callee = base;
+ node$1.arguments = exprList;
+ base = this.finishNode(node$1, "CallExpression");
+ } else if (this.type === types.backQuote) {
+ var node$2 = this.startNodeAt(startPos, startLoc);
+ node$2.tag = base;
+ node$2.quasi = this.parseTemplate({isTagged: true});
+ base = this.finishNode(node$2, "TaggedTemplateExpression");
}
+ return base
};
// Parse an atomic expression — either a single token that is an
@@ -2199,14 +2224,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) {
case types.name:
var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;
- var id = this.parseIdent(this.type !== types.name);
+ var id = this.parseIdent(false);
if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function))
{ return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) }
if (canBeArrow && !this.canInsertSemicolon()) {
if (this.eat(types.arrow))
{ return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) }
if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) {
- id = this.parseIdent();
+ id = this.parseIdent(false);
if (this.canInsertSemicolon() || !this.eat(types.arrow))
{ this.unexpected(); }
return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)
@@ -2295,6 +2320,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) {
var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;
this.yieldPos = 0;
this.awaitPos = 0;
+ // Do not save awaitIdentPos to allow checking awaits nested in parameters
while (this.type !== types.parenR) {
first ? first = false : this$1.expect(types.comma);
if (allowTrailingComma && this$1.afterTrailingComma(types.parenR, true)) {
@@ -2538,7 +2564,10 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
{ this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); }
}
} else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") {
+ if (isGenerator || isAsync) { this.unexpected(); }
this.checkUnreserved(prop.key);
+ if (prop.key.name === "await" && !this.awaitIdentPos)
+ { this.awaitIdentPos = startPos; }
prop.kind = "init";
if (isPattern) {
prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);
@@ -2578,7 +2607,7 @@ pp$3.initFunction = function(node) {
// Parse object or class method.
pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
- var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.initFunction(node);
if (this.options.ecmaVersion >= 6)
@@ -2588,22 +2617,24 @@ pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));
this.expect(types.parenL);
node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);
this.checkYieldAwaitInDefaultParams();
- this.parseFunctionBody(node, false);
+ this.parseFunctionBody(node, false, true);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, "FunctionExpression")
};
// Parse arrow function expression with given parameters.
pp$3.parseArrowExpression = function(node, params, isAsync) {
- var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);
this.initFunction(node);
@@ -2611,18 +2642,20 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
node.params = this.toAssignableList(params, true);
- this.parseFunctionBody(node, true);
+ this.parseFunctionBody(node, true, false);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, "ArrowFunctionExpression")
};
// Parse function body and check parameters.
-pp$3.parseFunctionBody = function(node, isArrowFunction) {
+pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) {
var isExpression = isArrowFunction && this.type !== types.braceL;
var oldStrict = this.strict, useStrict = false;
@@ -2648,7 +2681,7 @@ pp$3.parseFunctionBody = function(node, isArrowFunction) {
// Add the params to varDeclaredNames to ensure that an error is thrown
// if a let/const declaration in the function clashes with one of the params.
- this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params));
+ this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));
node.body = this.parseBlock(false);
node.expression = false;
this.adaptDirectivePrologue(node.body.body);
@@ -2723,9 +2756,9 @@ pp$3.checkUnreserved = function(ref) {
var name = ref.name;
if (this.inGenerator && name === "yield")
- { this.raiseRecoverable(start, "Can not use 'yield' as identifier inside a generator"); }
+ { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); }
if (this.inAsync && name === "await")
- { this.raiseRecoverable(start, "Can not use 'await' as identifier inside an async function"); }
+ { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); }
if (this.keywords.test(name))
{ this.raise(start, ("Unexpected keyword '" + name + "'")); }
if (this.options.ecmaVersion < 6 &&
@@ -2733,7 +2766,7 @@ pp$3.checkUnreserved = function(ref) {
var re = this.strict ? this.reservedWordsStrict : this.reservedWords;
if (re.test(name)) {
if (!this.inAsync && name === "await")
- { this.raiseRecoverable(start, "Can not use keyword 'await' outside an async function"); }
+ { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); }
this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved"));
}
};
@@ -2763,7 +2796,11 @@ pp$3.parseIdent = function(liberal, isBinding) {
}
this.next();
this.finishNode(node, "Identifier");
- if (!liberal) { this.checkUnreserved(node); }
+ if (!liberal) {
+ this.checkUnreserved(node);
+ if (node.name === "await" && !this.awaitIdentPos)
+ { this.awaitIdentPos = node.start; }
+ }
return node
};
@@ -2843,7 +2880,7 @@ pp$5.exitScope = function() {
// > At the top level of a function, or script, function declarations are
// > treated like var declarations rather than like lexical declarations.
pp$5.treatFunctionsAsVarInScope = function(scope) {
- return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP);
+ return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)
};
pp$5.declareName = function(name, bindingType, pos) {
@@ -2854,6 +2891,8 @@ pp$5.declareName = function(name, bindingType, pos) {
var scope = this.currentScope();
redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;
scope.lexical.push(name);
+ if (this.inModule && (scope.flags & SCOPE_TOP))
+ { delete this.undefinedExports[name]; }
} else if (bindingType === BIND_SIMPLE_CATCH) {
var scope$1 = this.currentScope();
scope$1.lexical.push(name);
@@ -2867,18 +2906,28 @@ pp$5.declareName = function(name, bindingType, pos) {
} else {
for (var i = this.scopeStack.length - 1; i >= 0; --i) {
var scope$3 = this$1.scopeStack[i];
- if (scope$3.lexical.indexOf(name) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name ||
+ if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||
!this$1.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {
redeclared = true;
break
}
scope$3.var.push(name);
+ if (this$1.inModule && (scope$3.flags & SCOPE_TOP))
+ { delete this$1.undefinedExports[name]; }
if (scope$3.flags & SCOPE_VAR) { break }
}
}
if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); }
};
+pp$5.checkLocalExport = function(id) {
+ // scope.functions must be empty as Module code is always strict.
+ if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&
+ this.scopeStack[0].var.indexOf(id.name) === -1) {
+ this.undefinedExports[id.name] = id;
+ }
+};
+
pp$5.currentScope = function() {
return this.scopeStack[this.scopeStack.length - 1]
};
@@ -3094,473 +3143,51 @@ types.name.updateContext = function(prevType) {
this.exprAllowed = allowed;
};
-var data = {
- "$LONE": [
- "ASCII",
- "ASCII_Hex_Digit",
- "AHex",
- "Alphabetic",
- "Alpha",
- "Any",
- "Assigned",
- "Bidi_Control",
- "Bidi_C",
- "Bidi_Mirrored",
- "Bidi_M",
- "Case_Ignorable",
- "CI",
- "Cased",
- "Changes_When_Casefolded",
- "CWCF",
- "Changes_When_Casemapped",
- "CWCM",
- "Changes_When_Lowercased",
- "CWL",
- "Changes_When_NFKC_Casefolded",
- "CWKCF",
- "Changes_When_Titlecased",
- "CWT",
- "Changes_When_Uppercased",
- "CWU",
- "Dash",
- "Default_Ignorable_Code_Point",
- "DI",
- "Deprecated",
- "Dep",
- "Diacritic",
- "Dia",
- "Emoji",
- "Emoji_Component",
- "Emoji_Modifier",
- "Emoji_Modifier_Base",
- "Emoji_Presentation",
- "Extender",
- "Ext",
- "Grapheme_Base",
- "Gr_Base",
- "Grapheme_Extend",
- "Gr_Ext",
- "Hex_Digit",
- "Hex",
- "IDS_Binary_Operator",
- "IDSB",
- "IDS_Trinary_Operator",
- "IDST",
- "ID_Continue",
- "IDC",
- "ID_Start",
- "IDS",
- "Ideographic",
- "Ideo",
- "Join_Control",
- "Join_C",
- "Logical_Order_Exception",
- "LOE",
- "Lowercase",
- "Lower",
- "Math",
- "Noncharacter_Code_Point",
- "NChar",
- "Pattern_Syntax",
- "Pat_Syn",
- "Pattern_White_Space",
- "Pat_WS",
- "Quotation_Mark",
- "QMark",
- "Radical",
- "Regional_Indicator",
- "RI",
- "Sentence_Terminal",
- "STerm",
- "Soft_Dotted",
- "SD",
- "Terminal_Punctuation",
- "Term",
- "Unified_Ideograph",
- "UIdeo",
- "Uppercase",
- "Upper",
- "Variation_Selector",
- "VS",
- "White_Space",
- "space",
- "XID_Continue",
- "XIDC",
- "XID_Start",
- "XIDS"
- ],
- "General_Category": [
- "Cased_Letter",
- "LC",
- "Close_Punctuation",
- "Pe",
- "Connector_Punctuation",
- "Pc",
- "Control",
- "Cc",
- "cntrl",
- "Currency_Symbol",
- "Sc",
- "Dash_Punctuation",
- "Pd",
- "Decimal_Number",
- "Nd",
- "digit",
- "Enclosing_Mark",
- "Me",
- "Final_Punctuation",
- "Pf",
- "Format",
- "Cf",
- "Initial_Punctuation",
- "Pi",
- "Letter",
- "L",
- "Letter_Number",
- "Nl",
- "Line_Separator",
- "Zl",
- "Lowercase_Letter",
- "Ll",
- "Mark",
- "M",
- "Combining_Mark",
- "Math_Symbol",
- "Sm",
- "Modifier_Letter",
- "Lm",
- "Modifier_Symbol",
- "Sk",
- "Nonspacing_Mark",
- "Mn",
- "Number",
- "N",
- "Open_Punctuation",
- "Ps",
- "Other",
- "C",
- "Other_Letter",
- "Lo",
- "Other_Number",
- "No",
- "Other_Punctuation",
- "Po",
- "Other_Symbol",
- "So",
- "Paragraph_Separator",
- "Zp",
- "Private_Use",
- "Co",
- "Punctuation",
- "P",
- "punct",
- "Separator",
- "Z",
- "Space_Separator",
- "Zs",
- "Spacing_Mark",
- "Mc",
- "Surrogate",
- "Cs",
- "Symbol",
- "S",
- "Titlecase_Letter",
- "Lt",
- "Unassigned",
- "Cn",
- "Uppercase_Letter",
- "Lu"
- ],
- "Script": [
- "Adlam",
- "Adlm",
- "Ahom",
- "Anatolian_Hieroglyphs",
- "Hluw",
- "Arabic",
- "Arab",
- "Armenian",
- "Armn",
- "Avestan",
- "Avst",
- "Balinese",
- "Bali",
- "Bamum",
- "Bamu",
- "Bassa_Vah",
- "Bass",
- "Batak",
- "Batk",
- "Bengali",
- "Beng",
- "Bhaiksuki",
- "Bhks",
- "Bopomofo",
- "Bopo",
- "Brahmi",
- "Brah",
- "Braille",
- "Brai",
- "Buginese",
- "Bugi",
- "Buhid",
- "Buhd",
- "Canadian_Aboriginal",
- "Cans",
- "Carian",
- "Cari",
- "Caucasian_Albanian",
- "Aghb",
- "Chakma",
- "Cakm",
- "Cham",
- "Cherokee",
- "Cher",
- "Common",
- "Zyyy",
- "Coptic",
- "Copt",
- "Qaac",
- "Cuneiform",
- "Xsux",
- "Cypriot",
- "Cprt",
- "Cyrillic",
- "Cyrl",
- "Deseret",
- "Dsrt",
- "Devanagari",
- "Deva",
- "Duployan",
- "Dupl",
- "Egyptian_Hieroglyphs",
- "Egyp",
- "Elbasan",
- "Elba",
- "Ethiopic",
- "Ethi",
- "Georgian",
- "Geor",
- "Glagolitic",
- "Glag",
- "Gothic",
- "Goth",
- "Grantha",
- "Gran",
- "Greek",
- "Grek",
- "Gujarati",
- "Gujr",
- "Gurmukhi",
- "Guru",
- "Han",
- "Hani",
- "Hangul",
- "Hang",
- "Hanunoo",
- "Hano",
- "Hatran",
- "Hatr",
- "Hebrew",
- "Hebr",
- "Hiragana",
- "Hira",
- "Imperial_Aramaic",
- "Armi",
- "Inherited",
- "Zinh",
- "Qaai",
- "Inscriptional_Pahlavi",
- "Phli",
- "Inscriptional_Parthian",
- "Prti",
- "Javanese",
- "Java",
- "Kaithi",
- "Kthi",
- "Kannada",
- "Knda",
- "Katakana",
- "Kana",
- "Kayah_Li",
- "Kali",
- "Kharoshthi",
- "Khar",
- "Khmer",
- "Khmr",
- "Khojki",
- "Khoj",
- "Khudawadi",
- "Sind",
- "Lao",
- "Laoo",
- "Latin",
- "Latn",
- "Lepcha",
- "Lepc",
- "Limbu",
- "Limb",
- "Linear_A",
- "Lina",
- "Linear_B",
- "Linb",
- "Lisu",
- "Lycian",
- "Lyci",
- "Lydian",
- "Lydi",
- "Mahajani",
- "Mahj",
- "Malayalam",
- "Mlym",
- "Mandaic",
- "Mand",
- "Manichaean",
- "Mani",
- "Marchen",
- "Marc",
- "Masaram_Gondi",
- "Gonm",
- "Meetei_Mayek",
- "Mtei",
- "Mende_Kikakui",
- "Mend",
- "Meroitic_Cursive",
- "Merc",
- "Meroitic_Hieroglyphs",
- "Mero",
- "Miao",
- "Plrd",
- "Modi",
- "Mongolian",
- "Mong",
- "Mro",
- "Mroo",
- "Multani",
- "Mult",
- "Myanmar",
- "Mymr",
- "Nabataean",
- "Nbat",
- "New_Tai_Lue",
- "Talu",
- "Newa",
- "Nko",
- "Nkoo",
- "Nushu",
- "Nshu",
- "Ogham",
- "Ogam",
- "Ol_Chiki",
- "Olck",
- "Old_Hungarian",
- "Hung",
- "Old_Italic",
- "Ital",
- "Old_North_Arabian",
- "Narb",
- "Old_Permic",
- "Perm",
- "Old_Persian",
- "Xpeo",
- "Old_South_Arabian",
- "Sarb",
- "Old_Turkic",
- "Orkh",
- "Oriya",
- "Orya",
- "Osage",
- "Osge",
- "Osmanya",
- "Osma",
- "Pahawh_Hmong",
- "Hmng",
- "Palmyrene",
- "Palm",
- "Pau_Cin_Hau",
- "Pauc",
- "Phags_Pa",
- "Phag",
- "Phoenician",
- "Phnx",
- "Psalter_Pahlavi",
- "Phlp",
- "Rejang",
- "Rjng",
- "Runic",
- "Runr",
- "Samaritan",
- "Samr",
- "Saurashtra",
- "Saur",
- "Sharada",
- "Shrd",
- "Shavian",
- "Shaw",
- "Siddham",
- "Sidd",
- "SignWriting",
- "Sgnw",
- "Sinhala",
- "Sinh",
- "Sora_Sompeng",
- "Sora",
- "Soyombo",
- "Soyo",
- "Sundanese",
- "Sund",
- "Syloti_Nagri",
- "Sylo",
- "Syriac",
- "Syrc",
- "Tagalog",
- "Tglg",
- "Tagbanwa",
- "Tagb",
- "Tai_Le",
- "Tale",
- "Tai_Tham",
- "Lana",
- "Tai_Viet",
- "Tavt",
- "Takri",
- "Takr",
- "Tamil",
- "Taml",
- "Tangut",
- "Tang",
- "Telugu",
- "Telu",
- "Thaana",
- "Thaa",
- "Thai",
- "Tibetan",
- "Tibt",
- "Tifinagh",
- "Tfng",
- "Tirhuta",
- "Tirh",
- "Ugaritic",
- "Ugar",
- "Vai",
- "Vaii",
- "Warang_Citi",
- "Wara",
- "Yi",
- "Yiii",
- "Zanabazar_Square",
- "Zanb"
- ]
-};
-Array.prototype.push.apply(data.$LONE, data.General_Category);
-data.gc = data.General_Category;
-data.sc = data.Script_Extensions = data.scx = data.Script;
+// This file contains Unicode properties extracted from the ECMAScript
+// specification. The lists are extracted like so:
+// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)
+
+// #table-binary-unicode-properties
+var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS";
+var unicodeBinaryProperties = {
+ 9: ecma9BinaryProperties,
+ 10: ecma9BinaryProperties + " Extended_Pictographic"
+};
+
+// #table-unicode-general-category-values
+var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu";
+
+// #table-unicode-script-values
+var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb";
+var unicodeScriptValues = {
+ 9: ecma9ScriptValues,
+ 10: ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"
+};
+
+var data = {};
+function buildUnicodeData(ecmaVersion) {
+ var d = data[ecmaVersion] = {
+ binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues),
+ nonBinary: {
+ General_Category: wordsRegexp(unicodeGeneralCategoryValues),
+ Script: wordsRegexp(unicodeScriptValues[ecmaVersion])
+ }
+ };
+ d.nonBinary.Script_Extensions = d.nonBinary.Script;
+
+ d.nonBinary.gc = d.nonBinary.General_Category;
+ d.nonBinary.sc = d.nonBinary.Script;
+ d.nonBinary.scx = d.nonBinary.Script_Extensions;
+}
+buildUnicodeData(9);
+buildUnicodeData(10);
var pp$9 = Parser.prototype;
var RegExpValidationState = function RegExpValidationState(parser) {
this.parser = parser;
this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "");
+ this.unicodeProperties = data[parser.options.ecmaVersion >= 10 ? 10 : parser.options.ecmaVersion];
this.source = "";
this.flags = "";
this.start = 0;
@@ -4344,14 +3971,14 @@ pp$9.regexp_eatUnicodePropertyValueExpression = function(state) {
return false
};
pp$9.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {
- if (!data.hasOwnProperty(name) || data[name].indexOf(value) === -1) {
- state.raise("Invalid property name");
- }
+ if (!has(state.unicodeProperties.nonBinary, name))
+ { state.raise("Invalid property name"); }
+ if (!state.unicodeProperties.nonBinary[name].test(value))
+ { state.raise("Invalid property value"); }
};
pp$9.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {
- if (data.$LONE.indexOf(nameOrValue) === -1) {
- state.raise("Invalid property name");
- }
+ if (!state.unicodeProperties.binary.test(nameOrValue))
+ { state.raise("Invalid property name"); }
};
// UnicodePropertyName ::
@@ -5334,7 +4961,7 @@ pp$8.readWord = function() {
//
// [walk]: util/walk.js
-var version = "6.0.6";
+var version = "6.1.0";
// The main exported interface (under `self.acorn` when in the
// browser) is a `parse` function that takes a code string and
diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js.map b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js.map
index 63bbd1d8fb..219dac5954 100644
--- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js.map
+++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.js.map
@@ -1 +1 @@
-{"version":3,"file":"acorn.js","sources":["../src/identifier.js","../src/tokentype.js","../src/whitespace.js","../src/util.js","../src/locutil.js","../src/options.js","../src/scopeflags.js","../src/state.js","../src/parseutil.js","../src/statement.js","../src/lval.js","../src/expression.js","../src/location.js","../src/scope.js","../src/node.js","../src/tokencontext.js","../src/unicode-property-data.js","../src/regexp.js","../src/tokenize.js","../src/index.js"],"sourcesContent":["// Reserved word lists for various dialects of the language\n\nexport const reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n}\n\n// And the keywords\n\nconst ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n\nexport const keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\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\"\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\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\"\n\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\")\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\")\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,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]\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,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]\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n let pos = 0x10000\n for (let i = 0; i < set.length; i += 2) {\n pos += set[i]\n if (pos > code) return false\n pos += set[i + 1]\n if (pos >= code) return true\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code, astral) {\n if (code < 65) return code === 36\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code, astral) {\n if (code < 48) return code === 36\n if (code < 58) return true\n if (code < 65) return false\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n","// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nexport class TokenType {\n constructor(label, conf = {}) {\n this.label = label\n this.keyword = conf.keyword\n this.beforeExpr = !!conf.beforeExpr\n this.startsExpr = !!conf.startsExpr\n this.isLoop = !!conf.isLoop\n this.isAssign = !!conf.isAssign\n this.prefix = !!conf.prefix\n this.postfix = !!conf.postfix\n this.binop = conf.binop || null\n this.updateContext = null\n }\n}\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nconst beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}\n\n// Map keyword names to token types.\n\nexport const keywords = {}\n\n// Succinct definitions of keyword token types\nfunction kw(name, options = {}) {\n options.keyword = name\n return keywords[name] = new TokenType(name, options)\n}\n\nexport const types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n}\n","// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nexport const lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\")\n\nexport function isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))\n}\n\nexport const nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g\n","const {hasOwnProperty, toString} = Object.prototype\n\n// Checks if an object has a property.\n\nexport function has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nexport const isArray = Array.isArray || ((obj) => (\n toString.call(obj) === \"[object Array]\"\n))\n","import {lineBreakG} from \"./whitespace\"\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n constructor(line, col) {\n this.line = line\n this.column = col\n }\n\n offset(n) {\n return new Position(this.line, this.column + n)\n }\n}\n\nexport class SourceLocation {\n constructor(p, start, end) {\n this.start = start\n this.end = end\n if (p.sourceFile !== null) this.source = p.sourceFile\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input, offset) {\n for (let line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur\n let match = lineBreakG.exec(input)\n if (match && match.index < offset) {\n ++line\n cur = match.index + match[0].length\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n","import {has, isArray} from \"./util\"\nimport {SourceLocation} from \"./locutil\"\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport const defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 9.\n ecmaVersion: 9,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts) {\n let options = {}\n\n for (let opt in defaultOptions)\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]\n\n if (options.ecmaVersion >= 2015)\n options.ecmaVersion -= 2009\n\n if (options.allowReserved == null)\n options.allowReserved = options.ecmaVersion < 5\n\n if (isArray(options.onToken)) {\n let tokens = options.onToken\n options.onToken = (token) => tokens.push(token)\n }\n if (isArray(options.onComment))\n options.onComment = pushComment(options, options.onComment)\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n let comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n }\n if (options.locations)\n comment.loc = new SourceLocation(this, startLoc, endLoc)\n if (options.ranges)\n comment.range = [start, end]\n array.push(comment)\n }\n}\n","// Each scope gets a bitset that may contain these flags\nexport const\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128\n\nexport function functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nexport const\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5 // Special case for function names as bound inside the function\n","import {reservedWords, keywords} from \"./identifier\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\nimport {getOptions} from \"./options\"\nimport {SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_SUPER, SCOPE_DIRECT_SUPER} from \"./scopeflags\"\n\nfunction keywordRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\nexport class Parser {\n constructor(options, input, startPos) {\n this.options = options = getOptions(options)\n this.sourceFile = options.sourceFile\n this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])\n let reserved = \"\"\n if (!options.allowReserved) {\n for (let v = options.ecmaVersion;; v--)\n if (reserved = reservedWords[v]) break\n if (options.sourceType === \"module\") reserved += \" await\"\n }\n this.reservedWords = keywordRegexp(reserved)\n let reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict\n this.reservedWordsStrict = keywordRegexp(reservedStrict)\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + reservedWords.strictBind)\n this.input = String(input)\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length\n } else {\n this.pos = this.lineStart = 0\n this.curLine = 1\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof\n // For tokens that include more information than their type, the value\n this.value = null\n // Its start and end offset\n this.start = this.end = this.pos\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition()\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null\n this.lastTokStart = this.lastTokEnd = this.pos\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext()\n this.exprAllowed = true\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\"\n this.strict = this.inModule || this.strictDirective(this.pos)\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = 0\n // Labels in scope.\n this.labels = []\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n this.skipLineComment(2)\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = []\n this.enterScope(SCOPE_TOP)\n\n // For RegExp validation\n this.regexpState = null\n }\n\n parse() {\n let node = this.options.program || this.startNode()\n this.nextToken()\n return this.parseTopLevel(node)\n }\n\n get inFunction() { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }\n get inGenerator() { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }\n get inAsync() { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }\n get allowSuper() { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }\n get allowDirectSuper() { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }\n get treatFunctionsAsVar() { return this.treatFunctionsAsVarInScope(this.currentScope()) }\n\n // Switch to a getter for 7.0.0.\n inNonArrowFunction() { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }\n\n static extend(...plugins) {\n let cls = this\n for (let i = 0; i < plugins.length; i++) cls = plugins[i](cls)\n return cls\n }\n\n static parse(input, options) {\n return new this(options, input).parse()\n }\n\n static parseExpressionAt(input, pos, options) {\n let parser = new this(options, input, pos)\n parser.nextToken()\n return parser.parseExpression()\n }\n\n static tokenizer(input, options) {\n return new this(options, input)\n }\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\n\nconst pp = Parser.prototype\n\n// ## Parser utilities\n\nconst literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\")/\npp.strictDirective = function(start) {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n let match = literal.exec(this.input.slice(start))\n if (!match) return false\n if ((match[1] || match[2]) === \"use strict\") return true\n start += match[0].length\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n if (this.input[start] === ';')\n start++\n }\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next()\n return true\n } else {\n return false\n }\n}\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === tt.name && this.value === name && !this.containsEsc\n}\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) return false\n this.next()\n return true\n}\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) this.unexpected()\n}\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === tt.eof ||\n this.type === tt.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)\n return true\n }\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()\n}\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)\n if (!notNext)\n this.next()\n return true\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected()\n}\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\")\n}\n\nexport function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) return\n if (refDestructuringErrors.trailingComma > -1)\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\")\n let parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind\n if (parens > -1) this.raiseRecoverable(parens, \"Parenthesized pattern\")\n}\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) return false\n let {shorthandAssign, doubleProto} = refDestructuringErrors\n if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0\n if (shorthandAssign >= 0)\n this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\")\n if (doubleProto >= 0)\n this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\")\n}\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\")\n if (this.awaitPos)\n this.raise(this.awaitPos, \"Await expression cannot be a default value\")\n}\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n return this.isSimpleAssignTarget(expr.expression)\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\nimport {isIdentifierStart, isIdentifierChar, keywordRelationalOperator} from \"./identifier\"\nimport {has} from \"./util\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {functionFlags, SCOPE_SIMPLE_CATCH, BIND_SIMPLE_CATCH, BIND_LEXICAL, BIND_VAR, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function(node) {\n let exports = {}\n if (!node.body) node.body = []\n while (this.type !== tt.eof) {\n let stmt = this.parseStatement(null, true, exports)\n node.body.push(stmt)\n }\n this.adaptDirectivePrologue(node.body)\n this.next()\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType\n }\n return this.finishNode(node, \"Program\")\n}\n\nconst loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"}\n\npp.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) return false\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91) return true // '['\n if (context) return false\n\n if (nextCh === 123) return true // '{'\n if (isIdentifierStart(nextCh, true)) {\n let pos = next + 1\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos\n let ident = this.input.slice(next, pos)\n if (!keywordRelationalOperator.test(ident)) return true\n }\n return false\n}\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n return false\n\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function(context, topLevel, exports) {\n let starttype = this.type, node = this.startNode(), kind\n\n if (this.isLet(context)) {\n starttype = tt._var\n kind = \"let\"\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case tt._debugger: return this.parseDebuggerStatement(node)\n case tt._do: return this.parseDoStatement(node)\n case tt._for: return this.parseForStatement(node)\n case tt._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) this.unexpected()\n return this.parseFunctionStatement(node, false, !context)\n case tt._class:\n if (context) this.unexpected()\n return this.parseClass(node, true)\n case tt._if: return this.parseIfStatement(node)\n case tt._return: return this.parseReturnStatement(node)\n case tt._switch: return this.parseSwitchStatement(node)\n case tt._throw: return this.parseThrowStatement(node)\n case tt._try: return this.parseTryStatement(node)\n case tt._const: case tt._var:\n kind = kind || this.value\n if (context && kind !== \"var\") this.unexpected()\n return this.parseVarStatement(node, kind)\n case tt._while: return this.parseWhileStatement(node)\n case tt._with: return this.parseWithStatement(node)\n case tt.braceL: return this.parseBlock(true, node)\n case tt.semi: return this.parseEmptyStatement(node)\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\")\n if (!this.inModule)\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\")\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) this.unexpected()\n this.next()\n return this.parseFunctionStatement(node, true, !context)\n }\n\n let maybeName = this.value, expr = this.parseExpression()\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon))\n return this.parseLabeledStatement(node, maybeName, expr, context)\n else return this.parseExpressionStatement(node, expr)\n }\n}\n\npp.parseBreakContinueStatement = function(node, keyword) {\n let isBreak = keyword === \"break\"\n this.next()\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null\n else if (this.type !== tt.name) this.unexpected()\n else {\n node.label = this.parseIdent()\n this.semicolon()\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n let i = 0\n for (; i < this.labels.length; ++i) {\n let lab = this.labels[i]\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break\n if (node.label && isBreak) break\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword)\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n}\n\npp.parseDebuggerStatement = function(node) {\n this.next()\n this.semicolon()\n return this.finishNode(node, \"DebuggerStatement\")\n}\n\npp.parseDoStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"do\")\n this.labels.pop()\n this.expect(tt._while)\n node.test = this.parseParenExpression()\n if (this.options.ecmaVersion >= 6)\n this.eat(tt.semi)\n else\n this.semicolon()\n return this.finishNode(node, \"DoWhileStatement\")\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function(node) {\n this.next()\n let awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual(\"await\")) ? this.lastTokStart : -1\n this.labels.push(loopLabel)\n this.enterScope(0)\n this.expect(tt.parenL)\n if (this.type === tt.semi) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, null)\n }\n let isLet = this.isLet()\n if (this.type === tt._var || this.type === tt._const || isLet) {\n let init = this.startNode(), kind = isLet ? \"let\" : this.value\n this.next()\n this.parseVar(init, true, kind)\n this.finishNode(init, \"VariableDeclaration\")\n if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1 &&\n !(kind !== \"var\" && init.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n }\n let refDestructuringErrors = new DestructuringErrors\n let init = this.parseExpression(true, refDestructuringErrors)\n if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n this.toAssignable(init, false, refDestructuringErrors)\n this.checkLVal(init)\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n}\n\npp.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next()\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n}\n\npp.parseIfStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\")\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null\n return this.finishNode(node, \"IfStatement\")\n}\n\npp.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n this.raise(this.start, \"'return' outside of function\")\n this.next()\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null\n else { node.argument = this.parseExpression(); this.semicolon() }\n return this.finishNode(node, \"ReturnStatement\")\n}\n\npp.parseSwitchStatement = function(node) {\n this.next()\n node.discriminant = this.parseParenExpression()\n node.cases = []\n this.expect(tt.braceL)\n this.labels.push(switchLabel)\n this.enterScope(0)\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur\n for (let sawDefault = false; this.type !== tt.braceR;) {\n if (this.type === tt._case || this.type === tt._default) {\n let isCase = this.type === tt._case\n if (cur) this.finishNode(cur, \"SwitchCase\")\n node.cases.push(cur = this.startNode())\n cur.consequent = []\n this.next()\n if (isCase) {\n cur.test = this.parseExpression()\n } else {\n if (sawDefault) this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\")\n sawDefault = true\n cur.test = null\n }\n this.expect(tt.colon)\n } else {\n if (!cur) this.unexpected()\n cur.consequent.push(this.parseStatement(null))\n }\n }\n this.exitScope()\n if (cur) this.finishNode(cur, \"SwitchCase\")\n this.next() // Closing brace\n this.labels.pop()\n return this.finishNode(node, \"SwitchStatement\")\n}\n\npp.parseThrowStatement = function(node) {\n this.next()\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n this.raise(this.lastTokEnd, \"Illegal newline after throw\")\n node.argument = this.parseExpression()\n this.semicolon()\n return this.finishNode(node, \"ThrowStatement\")\n}\n\n// Reused empty array added for node fields that are always empty.\n\nconst empty = []\n\npp.parseTryStatement = function(node) {\n this.next()\n node.block = this.parseBlock()\n node.handler = null\n if (this.type === tt._catch) {\n let clause = this.startNode()\n this.next()\n if (this.eat(tt.parenL)) {\n clause.param = this.parseBindingAtom()\n let simple = clause.param.type === \"Identifier\"\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0)\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL)\n this.expect(tt.parenR)\n } else {\n if (this.options.ecmaVersion < 10) this.unexpected()\n clause.param = null\n this.enterScope(0)\n }\n clause.body = this.parseBlock(false)\n this.exitScope()\n node.handler = this.finishNode(clause, \"CatchClause\")\n }\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null\n if (!node.handler && !node.finalizer)\n this.raise(node.start, \"Missing catch or finally clause\")\n return this.finishNode(node, \"TryStatement\")\n}\n\npp.parseVarStatement = function(node, kind) {\n this.next()\n this.parseVar(node, false, kind)\n this.semicolon()\n return this.finishNode(node, \"VariableDeclaration\")\n}\n\npp.parseWhileStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"while\")\n this.labels.pop()\n return this.finishNode(node, \"WhileStatement\")\n}\n\npp.parseWithStatement = function(node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\")\n this.next()\n node.object = this.parseParenExpression()\n node.body = this.parseStatement(\"with\")\n return this.finishNode(node, \"WithStatement\")\n}\n\npp.parseEmptyStatement = function(node) {\n this.next()\n return this.finishNode(node, \"EmptyStatement\")\n}\n\npp.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (let label of this.labels)\n if (label.name === maybeName)\n this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\")\n let kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null\n for (let i = this.labels.length - 1; i >= 0; i--) {\n let label = this.labels[i]\n if (label.statementStart === node.start) {\n // Update information about previous labels on this node\n label.statementStart = this.start\n label.kind = kind\n } else break\n }\n this.labels.push({name: maybeName, kind, statementStart: this.start})\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\")\n this.labels.pop()\n node.label = expr\n return this.finishNode(node, \"LabeledStatement\")\n}\n\npp.parseExpressionStatement = function(node, expr) {\n node.expression = expr\n this.semicolon()\n return this.finishNode(node, \"ExpressionStatement\")\n}\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function(createNewLexicalScope = true, node = this.startNode()) {\n node.body = []\n this.expect(tt.braceL)\n if (createNewLexicalScope) this.enterScope(0)\n while (!this.eat(tt.braceR)) {\n let stmt = this.parseStatement(null)\n node.body.push(stmt)\n }\n if (createNewLexicalScope) this.exitScope()\n return this.finishNode(node, \"BlockStatement\")\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function(node, init) {\n node.init = init\n this.expect(tt.semi)\n node.test = this.type === tt.semi ? null : this.parseExpression()\n this.expect(tt.semi)\n node.update = this.type === tt.parenR ? null : this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, \"ForStatement\")\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function(node, init) {\n let type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\"\n this.next()\n if (type === \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" ||\n (init.type === \"VariableDeclaration\" && init.declarations[0].init != null &&\n (this.strict || init.declarations[0].id.type !== \"Identifier\")))\n this.raise(init.start, \"Invalid assignment in for-in loop head\")\n }\n node.left = init\n node.right = type === \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, type)\n}\n\n// Parse a list of variable declarations.\n\npp.parseVar = function(node, isFor, kind) {\n node.declarations = []\n node.kind = kind\n for (;;) {\n let decl = this.startNode()\n this.parseVarId(decl, kind)\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor)\n } else if (kind === \"const\" && !(this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected()\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.type === tt._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\")\n } else {\n decl.init = null\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"))\n if (!this.eat(tt.comma)) break\n }\n return node\n}\n\npp.parseVarId = function(decl, kind) {\n if ((kind === \"const\" || kind === \"let\") && this.isContextual(\"let\")) {\n this.raiseRecoverable(this.start, \"let is disallowed as a lexically bound name\");\n }\n decl.id = this.parseBindingAtom()\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false)\n}\n\nconst FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseFunction = function(node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node)\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === tt.star && (statement & FUNC_HANGING_STATEMENT))\n this.unexpected()\n node.generator = this.eat(tt.star)\n }\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== tt.name ? null : this.parseIdent()\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION);\n }\n\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.enterScope(functionFlags(node.async, node.generator))\n\n if (!(statement & FUNC_STATEMENT))\n node.id = this.type === tt.name ? this.parseIdent() : null\n\n this.parseFunctionParams(node)\n this.parseFunctionBody(node, allowExpressionBody)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n}\n\npp.parseFunctionParams = function(node) {\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function(node, isStatement) {\n this.next()\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n const oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement)\n this.parseClassSuper(node)\n let classBody = this.startNode()\n let hadConstructor = false\n classBody.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n const element = this.parseClassElement(node.superClass !== null)\n if (element) {\n classBody.body.push(element)\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) this.raise(element.start, \"Duplicate constructor in the same class\")\n hadConstructor = true\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\")\n this.strict = oldStrict;\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n}\n\npp.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(tt.semi)) return null\n\n let method = this.startNode()\n const tryContextual = (k, noLineBreak = false) => {\n const start = this.start, startLoc = this.startLoc\n if (!this.eatContextual(k)) return false\n if (this.type !== tt.parenL && (!noLineBreak || !this.canInsertSemicolon())) return true\n if (method.key) this.unexpected()\n method.computed = false\n method.key = this.startNodeAt(start, startLoc)\n method.key.name = k\n this.finishNode(method.key, \"Identifier\")\n return false\n }\n\n method.kind = \"method\"\n method.static = tryContextual(\"static\")\n let isGenerator = this.eat(tt.star)\n let isAsync = false\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\"\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\"\n }\n }\n if (!method.key) this.parsePropertyName(method)\n let {key} = method\n let allowsDirectSuper = false\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") this.raise(key.start, \"Constructor can't have get/set modifier\")\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\")\n if (isAsync) this.raise(key.start, \"Constructor can't be an async method\")\n method.kind = \"constructor\"\n allowsDirectSuper = constructorAllowsSuper\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\")\n }\n this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper)\n if (method.kind === \"get\" && method.value.params.length !== 0)\n this.raiseRecoverable(method.value.start, \"getter should have no params\")\n if (method.kind === \"set\" && method.value.params.length !== 1)\n this.raiseRecoverable(method.value.start, \"setter should have exactly one param\")\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\")\n return method\n}\n\npp.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper)\n return this.finishNode(method, \"MethodDefinition\")\n}\n\npp.parseClassId = function(node, isStatement) {\n if (this.type === tt.name) {\n node.id = this.parseIdent();\n if (isStatement === true)\n this.checkLVal(node.id, BIND_LEXICAL, false)\n } else {\n if (isStatement === true)\n this.unexpected();\n node.id = null;\n }\n}\n\npp.parseClassSuper = function(node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null\n}\n\n// Parses module export declaration.\n\npp.parseExport = function(node, exports) {\n this.next()\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\")\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n this.semicolon()\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(tt._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart)\n let isAsync\n if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {\n let fNode = this.startNode()\n this.next()\n if (isAsync) this.next()\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync, true)\n } else if (this.type === tt._class) {\n let cNode = this.startNode()\n node.declaration = this.parseClass(cNode, \"nullableID\")\n } else {\n node.declaration = this.parseMaybeAssign()\n this.semicolon()\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null)\n if (node.declaration.type === \"VariableDeclaration\")\n this.checkVariableExport(exports, node.declaration.declarations)\n else\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)\n node.specifiers = []\n node.source = null\n } else { // export { x, y as z } [from '...']\n node.declaration = null\n node.specifiers = this.parseExportSpecifiers(exports)\n if (this.eatContextual(\"from\")) {\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n } else {\n // check for keywords used as local names\n for (let spec of node.specifiers) {\n this.checkUnreserved(spec.local)\n }\n\n node.source = null\n }\n this.semicolon()\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n}\n\npp.checkExport = function(exports, name, pos) {\n if (!exports) return\n if (has(exports, name))\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\")\n exports[name] = true\n}\n\npp.checkPatternExport = function(exports, pat) {\n let type = pat.type\n if (type === \"Identifier\")\n this.checkExport(exports, pat.name, pat.start)\n else if (type === \"ObjectPattern\")\n for (let prop of pat.properties)\n this.checkPatternExport(exports, prop)\n else if (type === \"ArrayPattern\")\n for (let elt of pat.elements) {\n if (elt) this.checkPatternExport(exports, elt)\n }\n else if (type === \"Property\")\n this.checkPatternExport(exports, pat.value)\n else if (type === \"AssignmentPattern\")\n this.checkPatternExport(exports, pat.left)\n else if (type === \"RestElement\")\n this.checkPatternExport(exports, pat.argument)\n else if (type === \"ParenthesizedExpression\")\n this.checkPatternExport(exports, pat.expression)\n}\n\npp.checkVariableExport = function(exports, decls) {\n if (!exports) return\n for (let decl of decls)\n this.checkPatternExport(exports, decl.id)\n}\n\npp.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n}\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function(exports) {\n let nodes = [], first = true\n // export { x, y as z } [from '...']\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.local = this.parseIdent(true)\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local\n this.checkExport(exports, node.exported.name, node.exported.start)\n nodes.push(this.finishNode(node, \"ExportSpecifier\"))\n }\n return nodes\n}\n\n// Parses import declaration.\n\npp.parseImport = function(node) {\n this.next()\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty\n node.source = this.parseExprAtom()\n } else {\n node.specifiers = this.parseImportSpecifiers()\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n }\n this.semicolon()\n return this.finishNode(node, \"ImportDeclaration\")\n}\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function() {\n let nodes = [], first = true\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n let node = this.startNode()\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"))\n if (!this.eat(tt.comma)) return nodes\n }\n if (this.type === tt.star) {\n let node = this.startNode()\n this.next()\n this.expectContextual(\"as\")\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"))\n return nodes\n }\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.imported = this.parseIdent(true)\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent()\n } else {\n this.checkUnreserved(node.imported)\n node.local = node.imported\n }\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportSpecifier\"))\n }\n return nodes\n}\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp.adaptDirectivePrologue = function(statements) {\n for (let i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1)\n }\n}\npp.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {has} from \"./util\"\nimport {BIND_NONE, BIND_OUTSIDE} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n this.raise(node.start, \"Can not use 'await' as identifier inside an async function\")\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n for (let prop of node.properties) {\n this.toAssignable(prop, isBinding)\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\")\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") this.raise(node.key.start, \"Object pattern can't contain getter or setter\")\n this.toAssignable(node.value, isBinding)\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n this.toAssignableList(node.elements, isBinding)\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\"\n this.toAssignable(node.argument, isBinding)\n if (node.argument.type === \"AssignmentPattern\")\n this.raise(node.argument.start, \"Rest elements cannot have a default value\")\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\")\n node.type = \"AssignmentPattern\"\n delete node.operator\n this.toAssignable(node.left, isBinding)\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors)\n break\n\n case \"MemberExpression\":\n if (!isBinding) break\n\n default:\n this.raise(node.start, \"Assigning to rvalue\")\n }\n } else if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n return node\n}\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function(exprList, isBinding) {\n let end = exprList.length\n for (let i = 0; i < end; i++) {\n let elt = exprList[i]\n if (elt) this.toAssignable(elt, isBinding)\n }\n if (end) {\n let last = exprList[end - 1]\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n this.unexpected(last.argument.start)\n }\n return exprList\n}\n\n// Parses spread element.\n\npp.parseSpread = function(refDestructuringErrors) {\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n return this.finishNode(node, \"SpreadElement\")\n}\n\npp.parseRestBinding = function() {\n let node = this.startNode()\n this.next()\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== tt.name)\n this.unexpected()\n\n node.argument = this.parseBindingAtom()\n\n return this.finishNode(node, \"RestElement\")\n}\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case tt.bracketL:\n let node = this.startNode()\n this.next()\n node.elements = this.parseBindingList(tt.bracketR, true, true)\n return this.finishNode(node, \"ArrayPattern\")\n\n case tt.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n}\n\npp.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (first) first = false\n else this.expect(tt.comma)\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null)\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === tt.ellipsis) {\n let rest = this.parseRestBinding()\n this.parseBindingListItem(rest)\n elts.push(rest)\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n this.expect(close)\n break\n } else {\n let elem = this.parseMaybeDefault(this.start, this.startLoc)\n this.parseBindingListItem(elem)\n elts.push(elem)\n }\n }\n return elts\n}\n\npp.parseBindingListItem = function(param) {\n return param\n}\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom()\n if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.right = this.parseMaybeAssign()\n return this.finishNode(node, \"AssignmentPattern\")\n}\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp.checkLVal = function(expr, bindingType = BIND_NONE, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\")\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n this.raiseRecoverable(expr.start, \"Argument name clash\")\n checkClashes[expr.name] = true\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) this.declareName(expr.name, bindingType, expr.start)\n break\n\n case \"MemberExpression\":\n if (bindingType) this.raiseRecoverable(expr.start, \"Binding member expression\")\n break\n\n case \"ObjectPattern\":\n for (let prop of expr.properties)\n this.checkLVal(prop, bindingType, checkClashes)\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes)\n break\n\n case \"ArrayPattern\":\n for (let elem of expr.elements) {\n if (elem) this.checkLVal(elem, bindingType, checkClashes)\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes)\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes)\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes)\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\")\n }\n}\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {lineBreak} from \"./whitespace\"\nimport {functionFlags, SCOPE_ARROW, SCOPE_SUPER, SCOPE_DIRECT_SUPER, BIND_OUTSIDE, BIND_VAR} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n return\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n return\n let {key} = prop, name\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n let {kind} = prop\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) refDestructuringErrors.doubleProto = key.start\n // Backwards-compat kludge. Can be removed in version 6.0\n else this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\")\n }\n propHash.proto = true\n }\n return\n }\n name = \"$\" + name\n let other = propHash[name]\n if (other) {\n let redefinition\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set\n } else {\n redefinition = other.init || other[kind]\n }\n if (redefinition)\n this.raiseRecoverable(key.start, \"Redefinition of property\")\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n }\n }\n other[kind] = true\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeAssign(noIn, refDestructuringErrors)\n if (this.type === tt.comma) {\n let node = this.startNodeAt(startPos, startLoc)\n node.expressions = [expr]\n while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors))\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) return this.parseYield(noIn)\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else this.exprAllowed = false\n }\n\n let ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldShorthandAssign = -1\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign\n oldTrailingComma = refDestructuringErrors.trailingComma\n oldShorthandAssign = refDestructuringErrors.shorthandAssign\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1\n } else {\n refDestructuringErrors = new DestructuringErrors\n ownDestructuringErrors = true\n }\n\n let startPos = this.start, startLoc = this.startLoc\n if (this.type === tt.parenL || this.type === tt.name)\n this.potentialArrowAt = this.start\n let left = this.parseMaybeConditional(noIn, refDestructuringErrors)\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)\n if (this.type.isAssign) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.left = this.type === tt.eq ? this.toAssignable(left, false, refDestructuringErrors) : left\n if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)\n refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly\n this.checkLVal(left)\n this.next()\n node.right = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign\n if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma\n if (oldShorthandAssign > -1) refDestructuringErrors.shorthandAssign = oldShorthandAssign\n return left\n}\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprOps(noIn, refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n if (this.eat(tt.question)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.test = expr\n node.consequent = this.parseMaybeAssign()\n this.expect(tt.colon)\n node.alternate = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n}\n\n// Start the precedence parser.\n\npp.parseExprOps = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeUnary(refDestructuringErrors, false)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n let prec = this.type.binop\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n let logical = this.type === tt.logicalOR || this.type === tt.logicalAND\n let op = this.value\n this.next()\n let startPos = this.start, startLoc = this.startLoc\n let right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)\n let node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n}\n\npp.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.operator = op\n node.right = right\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n}\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n let startPos = this.start, startLoc = this.startLoc, expr\n if (this.isContextual(\"await\") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {\n expr = this.parseAwait()\n sawUnary = true\n } else if (this.type.prefix) {\n let node = this.startNode(), update = this.type === tt.incDec\n node.operator = this.value\n node.prefix = true\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n this.checkExpressionErrors(refDestructuringErrors, true)\n if (update) this.checkLVal(node.argument)\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\")\n else sawUnary = true\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\")\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n while (this.type.postfix && !this.canInsertSemicolon()) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.prefix = false\n node.argument = expr\n this.checkLVal(expr)\n this.next()\n expr = this.finishNode(node, \"UpdateExpression\")\n }\n }\n\n if (!sawUnary && this.eat(tt.starstar))\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false)\n else\n return expr\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function(refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprAtom(refDestructuringErrors)\n let skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\"\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr\n let result = this.parseSubscripts(expr, startPos, startLoc)\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1\n if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1\n }\n return result\n}\n\npp.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\"\n for (let computed;;) {\n if ((computed = this.eat(tt.bracketL)) || this.eat(tt.dot)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.object = base\n node.property = computed ? this.parseExpression() : this.parseIdent(true)\n node.computed = !!computed\n if (computed) this.expect(tt.bracketR)\n base = this.finishNode(node, \"MemberExpression\")\n } else if (!noCalls && this.eat(tt.parenL)) {\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n this.yieldPos = 0\n this.awaitPos = 0\n let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors)\n if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)\n }\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n let node = this.startNodeAt(startPos, startLoc)\n node.callee = base\n node.arguments = exprList\n base = this.finishNode(node, \"CallExpression\")\n } else if (this.type === tt.backQuote) {\n let node = this.startNodeAt(startPos, startLoc)\n node.tag = base\n node.quasi = this.parseTemplate({isTagged: true})\n base = this.finishNode(node, \"TaggedTemplateExpression\")\n } else {\n return base\n }\n }\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function(refDestructuringErrors) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === tt.slash) this.readRegexp()\n\n let node, canBeArrow = this.potentialArrowAt === this.start\n switch (this.type) {\n case tt._super:\n if (!this.allowSuper)\n this.raise(this.start, \"'super' keyword outside a method\")\n node = this.startNode()\n this.next()\n if (this.type === tt.parenL && !this.allowDirectSuper)\n this.raise(node.start, \"super() call outside constructor of a subclass\")\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== tt.dot && this.type !== tt.bracketL && this.type !== tt.parenL)\n this.unexpected()\n return this.finishNode(node, \"Super\")\n\n case tt._this:\n node = this.startNode()\n this.next()\n return this.finishNode(node, \"ThisExpression\")\n\n case tt.name:\n let startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc\n let id = this.parseIdent(this.type !== tt.name)\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(tt._function))\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true)\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(tt.arrow))\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === tt.name && !containsEsc) {\n id = this.parseIdent()\n if (this.canInsertSemicolon() || !this.eat(tt.arrow))\n this.unexpected()\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case tt.regexp:\n let value = this.value\n node = this.parseLiteral(value.value)\n node.regex = {pattern: value.pattern, flags: value.flags}\n return node\n\n case tt.num: case tt.string:\n return this.parseLiteral(this.value)\n\n case tt._null: case tt._true: case tt._false:\n node = this.startNode()\n node.value = this.type === tt._null ? null : this.type === tt._true\n node.raw = this.type.keyword\n this.next()\n return this.finishNode(node, \"Literal\")\n\n case tt.parenL:\n let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n refDestructuringErrors.parenthesizedAssign = start\n if (refDestructuringErrors.parenthesizedBind < 0)\n refDestructuringErrors.parenthesizedBind = start\n }\n return expr\n\n case tt.bracketL:\n node = this.startNode()\n this.next()\n node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)\n return this.finishNode(node, \"ArrayExpression\")\n\n case tt.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case tt._function:\n node = this.startNode()\n this.next()\n return this.parseFunction(node, 0)\n\n case tt._class:\n return this.parseClass(this.startNode(), false)\n\n case tt._new:\n return this.parseNew()\n\n case tt.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected()\n }\n}\n\npp.parseLiteral = function(value) {\n let node = this.startNode()\n node.value = value\n node.raw = this.input.slice(this.start, this.end)\n this.next()\n return this.finishNode(node, \"Literal\")\n}\n\npp.parseParenExpression = function() {\n this.expect(tt.parenL)\n let val = this.parseExpression()\n this.expect(tt.parenR)\n return val\n}\n\npp.parseParenAndDistinguishExpression = function(canBeArrow) {\n let startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8\n if (this.options.ecmaVersion >= 6) {\n this.next()\n\n let innerStartPos = this.start, innerStartLoc = this.startLoc\n let exprList = [], first = true, lastIsComma = false\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart\n this.yieldPos = 0\n this.awaitPos = 0\n while (this.type !== tt.parenR) {\n first ? first = false : this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(tt.parenR, true)) {\n lastIsComma = true\n break\n } else if (this.type === tt.ellipsis) {\n spreadStart = this.start\n exprList.push(this.parseParenItem(this.parseRestBinding()))\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem))\n }\n }\n let innerEndPos = this.start, innerEndLoc = this.startLoc\n this.expect(tt.parenR)\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)\n if (spreadStart) this.unexpected(spreadStart)\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc)\n val.expressions = exprList\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc)\n } else {\n val = exprList[0]\n }\n } else {\n val = this.parseParenExpression()\n }\n\n if (this.options.preserveParens) {\n let par = this.startNodeAt(startPos, startLoc)\n par.expression = val\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n}\n\npp.parseParenItem = function(item) {\n return item\n}\n\npp.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nconst empty = []\n\npp.parseNew = function() {\n let node = this.startNode()\n let meta = this.parseIdent(true)\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta\n let containsEsc = this.containsEsc\n node.property = this.parseIdent(true)\n if (node.property.name !== \"target\" || containsEsc)\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\")\n if (!this.inNonArrowFunction())\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\")\n return this.finishNode(node, \"MetaProperty\")\n }\n let startPos = this.start, startLoc = this.startLoc\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)\n else node.arguments = empty\n return this.finishNode(node, \"NewExpression\")\n}\n\n// Parse template expression.\n\npp.parseTemplateElement = function({isTagged}) {\n let elem = this.startNode()\n if (this.type === tt.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\")\n }\n elem.value = {\n raw: this.value,\n cooked: null\n }\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n }\n }\n this.next()\n elem.tail = this.type === tt.backQuote\n return this.finishNode(elem, \"TemplateElement\")\n}\n\npp.parseTemplate = function({isTagged = false} = {}) {\n let node = this.startNode()\n this.next()\n node.expressions = []\n let curElt = this.parseTemplateElement({isTagged})\n node.quasis = [curElt]\n while (!curElt.tail) {\n if (this.type === tt.eof) this.raise(this.pos, \"Unterminated template literal\")\n this.expect(tt.dollarBraceL)\n node.expressions.push(this.parseExpression())\n this.expect(tt.braceR)\n node.quasis.push(curElt = this.parseTemplateElement({isTagged}))\n }\n this.next()\n return this.finishNode(node, \"TemplateLiteral\")\n}\n\npp.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === tt.name || this.type === tt.num || this.type === tt.string || this.type === tt.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === tt.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n const prop = this.parseProperty(isPattern, refDestructuringErrors)\n if (!isPattern) this.checkPropClash(prop, propHash, refDestructuringErrors)\n node.properties.push(prop)\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n}\n\npp.parseProperty = function(isPattern, refDestructuringErrors) {\n let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this.options.ecmaVersion >= 9 && this.eat(tt.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false)\n if (this.type === tt.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\")\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === tt.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === tt.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this.start\n startLoc = this.startLoc\n }\n if (!isPattern)\n isGenerator = this.eat(tt.star)\n }\n let containsEsc = this.containsEsc\n this.parsePropertyName(prop)\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n this.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc)\n return this.finishNode(prop, \"Property\")\n}\n\npp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === tt.colon)\n this.unexpected()\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)\n prop.kind = \"init\"\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected()\n prop.kind = \"init\"\n prop.method = true\n prop.value = this.parseMethod(isGenerator, isAsync)\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== tt.comma && this.type !== tt.braceR)) {\n if (isGenerator || isAsync) this.unexpected()\n prop.kind = prop.key.name\n this.parsePropertyName(prop)\n prop.value = this.parseMethod(false)\n let paramCount = prop.kind === \"get\" ? 0 : 1\n if (prop.value.params.length !== paramCount) {\n let start = prop.value.start\n if (prop.kind === \"get\")\n this.raiseRecoverable(start, \"getter should have no params\")\n else\n this.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\")\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n this.checkUnreserved(prop.key)\n prop.kind = \"init\"\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else if (this.type === tt.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n refDestructuringErrors.shorthandAssign = this.start\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else {\n prop.value = prop.key\n }\n prop.shorthand = true\n } else this.unexpected()\n}\n\npp.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true\n prop.key = this.parseMaybeAssign()\n this.expect(tt.bracketR)\n return prop.key\n } else {\n prop.computed = false\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)\n}\n\n// Initialize empty function node.\n\npp.initFunction = function(node) {\n node.id = null\n if (this.options.ecmaVersion >= 6) node.generator = node.expression = false\n if (this.options.ecmaVersion >= 8) node.async = false\n}\n\n// Parse object or class method.\n\npp.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n let node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6)\n node.generator = isGenerator\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0))\n\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n this.parseFunctionBody(node, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, \"FunctionExpression\")\n}\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function(node, params, isAsync) {\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW)\n this.initFunction(node)\n if (this.options.ecmaVersion >= 8) node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n\n node.params = this.toAssignableList(params, true)\n this.parseFunctionBody(node, true)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, \"ArrowFunctionExpression\")\n}\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function(node, isArrowFunction) {\n let isExpression = isArrowFunction && this.type !== tt.braceL\n let oldStrict = this.strict, useStrict = false\n\n if (isExpression) {\n node.body = this.parseMaybeAssign()\n node.expression = true\n this.checkParams(node, false)\n } else {\n let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end)\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\")\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n let oldLabels = this.labels\n this.labels = []\n if (useStrict) this.strict = true\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))\n node.body = this.parseBlock(false)\n node.expression = false\n this.adaptDirectivePrologue(node.body.body)\n this.labels = oldLabels\n }\n this.exitScope()\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) this.checkLVal(node.id, BIND_OUTSIDE)\n this.strict = oldStrict\n}\n\npp.isSimpleParamList = function(params) {\n for (let param of params)\n if (param.type !== \"Identifier\") return false\n return true\n}\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp.checkParams = function(node, allowDuplicates) {\n let nameHash = {}\n for (let param of node.params)\n this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash)\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (!first) {\n this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(close)) break\n } else first = false\n\n let elt\n if (allowEmpty && this.type === tt.comma)\n elt = null\n else if (this.type === tt.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors)\n if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0)\n refDestructuringErrors.trailingComma = this.start\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors)\n }\n elts.push(elt)\n }\n return elts\n}\n\npp.checkUnreserved = function({start, end, name}) {\n if (this.inGenerator && name === \"yield\")\n this.raiseRecoverable(start, \"Can not use 'yield' as identifier inside a generator\")\n if (this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Can not use 'await' as identifier inside an async function\")\n if (this.keywords.test(name))\n this.raise(start, `Unexpected keyword '${name}'`)\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) return\n const re = this.strict ? this.reservedWordsStrict : this.reservedWords\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Can not use keyword 'await' outside an async function\")\n this.raiseRecoverable(start, `The keyword '${name}' is reserved`)\n }\n}\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function(liberal, isBinding) {\n let node = this.startNode()\n if (liberal && this.options.allowReserved === \"never\") liberal = false\n if (this.type === tt.name) {\n node.name = this.value\n } else if (this.type.keyword) {\n node.name = this.type.keyword\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop()\n }\n } else {\n this.unexpected()\n }\n this.next()\n this.finishNode(node, \"Identifier\")\n if (!liberal) this.checkUnreserved(node)\n return node\n}\n\n// Parses yield expression inside generator.\n\npp.parseYield = function(noIn) {\n if (!this.yieldPos) this.yieldPos = this.start\n\n let node = this.startNode()\n this.next()\n if (this.type === tt.semi || this.canInsertSemicolon() || (this.type !== tt.star && !this.type.startsExpr)) {\n node.delegate = false\n node.argument = null\n } else {\n node.delegate = this.eat(tt.star)\n node.argument = this.parseMaybeAssign(noIn)\n }\n return this.finishNode(node, \"YieldExpression\")\n}\n\npp.parseAwait = function() {\n if (!this.awaitPos) this.awaitPos = this.start\n\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n return this.finishNode(node, \"AwaitExpression\")\n}\n","import {Parser} from \"./state\"\nimport {Position, getLineInfo} from \"./locutil\"\n\nconst pp = Parser.prototype\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function(pos, message) {\n let loc = getLineInfo(this.input, pos)\n message += \" (\" + loc.line + \":\" + loc.column + \")\"\n let err = new SyntaxError(message)\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos\n throw err\n}\n\npp.raiseRecoverable = pp.raise\n\npp.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n}\n","import {Parser} from \"./state\"\nimport {SCOPE_VAR, SCOPE_FUNCTION, SCOPE_TOP, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, BIND_LEXICAL, BIND_SIMPLE_CATCH, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\nclass Scope {\n constructor(flags) {\n this.flags = flags\n // A list of var-declared names in the current lexical scope\n this.var = []\n // A list of lexically-declared names in the current lexical scope\n this.lexical = []\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = []\n }\n}\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags))\n}\n\npp.exitScope = function() {\n this.scopeStack.pop()\n}\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP);\n}\n\npp.declareName = function(name, bindingType, pos) {\n let redeclared = false\n if (bindingType === BIND_LEXICAL) {\n const scope = this.currentScope()\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.lexical.push(name)\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n const scope = this.currentScope()\n scope.lexical.push(name)\n } else if (bindingType === BIND_FUNCTION) {\n const scope = this.currentScope()\n if (this.treatFunctionsAsVar)\n redeclared = scope.lexical.indexOf(name) > -1;\n else\n redeclared = scope.lexical.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.functions.push(name)\n } else {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n const scope = this.scopeStack[i]\n if (scope.lexical.indexOf(name) > -1 && !(scope.flags & SCOPE_SIMPLE_CATCH) && scope.lexical[0] === name ||\n !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1) {\n redeclared = true\n break\n }\n scope.var.push(name)\n if (scope.flags & SCOPE_VAR) break\n }\n }\n if (redeclared) this.raiseRecoverable(pos, `Identifier '${name}' has already been declared`)\n}\n\npp.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n}\n\npp.currentVarScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR) return scope\n }\n}\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp.currentThisScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) return scope\n }\n}\n","import {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\n\nexport class Node {\n constructor(parser, pos, loc) {\n this.type = \"\"\n this.start = pos\n this.end = 0\n if (parser.options.locations)\n this.loc = new SourceLocation(parser, loc)\n if (parser.options.directSourceFile)\n this.sourceFile = parser.options.directSourceFile\n if (parser.options.ranges)\n this.range = [pos, 0]\n }\n}\n\n// Start an AST node, attaching a start offset.\n\nconst pp = Parser.prototype\n\npp.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n}\n\npp.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n}\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type\n node.end = pos\n if (this.options.locations)\n node.loc.end = loc\n if (this.options.ranges)\n node.range[1] = pos\n return node\n}\n\npp.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n}\n\n// Finish node at given position\n\npp.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n}\n","// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport {Parser} from \"./state\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\n\nexport class TokContext {\n constructor(token, isExpr, preserveSpace, override, generator) {\n this.token = token\n this.isExpr = !!isExpr\n this.preserveSpace = !!preserveSpace\n this.override = override\n this.generator = !!generator\n }\n}\n\nexport const types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, p => p.tryReadTemplateToken()),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n}\n\nconst pp = Parser.prototype\n\npp.initialContext = function() {\n return [types.b_stat]\n}\n\npp.braceIsBlock = function(prevType) {\n let parent = this.curContext()\n if (parent === types.f_expr || parent === types.f_stat)\n return true\n if (prevType === tt.colon && (parent === types.b_stat || parent === types.b_expr))\n return !parent.isExpr\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === tt._return || prevType === tt.name && this.exprAllowed)\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType === tt.arrow)\n return true\n if (prevType === tt.braceL)\n return parent === types.b_stat\n if (prevType === tt._var || prevType === tt._const || prevType === tt.name)\n return false\n return !this.exprAllowed\n}\n\npp.inGeneratorContext = function() {\n for (let i = this.context.length - 1; i >= 1; i--) {\n let context = this.context[i]\n if (context.token === \"function\")\n return context.generator\n }\n return false\n}\n\npp.updateContext = function(prevType) {\n let update, type = this.type\n if (type.keyword && prevType === tt.dot)\n this.exprAllowed = false\n else if (update = type.updateContext)\n update.call(this, prevType)\n else\n this.exprAllowed = type.beforeExpr\n}\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true\n return\n }\n let out = this.context.pop()\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop()\n }\n this.exprAllowed = !out.isExpr\n}\n\ntt.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)\n this.exprAllowed = true\n}\n\ntt.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl)\n this.exprAllowed = true\n}\n\ntt.parenL.updateContext = function(prevType) {\n let statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while\n this.context.push(statementParens ? types.p_stat : types.p_expr)\n this.exprAllowed = true\n}\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n}\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&\n !(prevType === tt._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))\n this.context.push(types.f_expr)\n else\n this.context.push(types.f_stat)\n this.exprAllowed = false\n}\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n this.context.pop()\n else\n this.context.push(types.q_tmpl)\n this.exprAllowed = false\n}\n\ntt.star.updateContext = function(prevType) {\n if (prevType === tt._function) {\n let index = this.context.length - 1\n if (this.context[index] === types.f_expr)\n this.context[index] = types.f_expr_gen\n else\n this.context[index] = types.f_gen\n }\n this.exprAllowed = true\n}\n\ntt.name.updateContext = function(prevType) {\n let allowed = false\n if (this.options.ecmaVersion >= 6 && prevType !== tt.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n allowed = true\n }\n this.exprAllowed = allowed\n}\n","const data = {\n \"$LONE\": [\n \"ASCII\",\n \"ASCII_Hex_Digit\",\n \"AHex\",\n \"Alphabetic\",\n \"Alpha\",\n \"Any\",\n \"Assigned\",\n \"Bidi_Control\",\n \"Bidi_C\",\n \"Bidi_Mirrored\",\n \"Bidi_M\",\n \"Case_Ignorable\",\n \"CI\",\n \"Cased\",\n \"Changes_When_Casefolded\",\n \"CWCF\",\n \"Changes_When_Casemapped\",\n \"CWCM\",\n \"Changes_When_Lowercased\",\n \"CWL\",\n \"Changes_When_NFKC_Casefolded\",\n \"CWKCF\",\n \"Changes_When_Titlecased\",\n \"CWT\",\n \"Changes_When_Uppercased\",\n \"CWU\",\n \"Dash\",\n \"Default_Ignorable_Code_Point\",\n \"DI\",\n \"Deprecated\",\n \"Dep\",\n \"Diacritic\",\n \"Dia\",\n \"Emoji\",\n \"Emoji_Component\",\n \"Emoji_Modifier\",\n \"Emoji_Modifier_Base\",\n \"Emoji_Presentation\",\n \"Extender\",\n \"Ext\",\n \"Grapheme_Base\",\n \"Gr_Base\",\n \"Grapheme_Extend\",\n \"Gr_Ext\",\n \"Hex_Digit\",\n \"Hex\",\n \"IDS_Binary_Operator\",\n \"IDSB\",\n \"IDS_Trinary_Operator\",\n \"IDST\",\n \"ID_Continue\",\n \"IDC\",\n \"ID_Start\",\n \"IDS\",\n \"Ideographic\",\n \"Ideo\",\n \"Join_Control\",\n \"Join_C\",\n \"Logical_Order_Exception\",\n \"LOE\",\n \"Lowercase\",\n \"Lower\",\n \"Math\",\n \"Noncharacter_Code_Point\",\n \"NChar\",\n \"Pattern_Syntax\",\n \"Pat_Syn\",\n \"Pattern_White_Space\",\n \"Pat_WS\",\n \"Quotation_Mark\",\n \"QMark\",\n \"Radical\",\n \"Regional_Indicator\",\n \"RI\",\n \"Sentence_Terminal\",\n \"STerm\",\n \"Soft_Dotted\",\n \"SD\",\n \"Terminal_Punctuation\",\n \"Term\",\n \"Unified_Ideograph\",\n \"UIdeo\",\n \"Uppercase\",\n \"Upper\",\n \"Variation_Selector\",\n \"VS\",\n \"White_Space\",\n \"space\",\n \"XID_Continue\",\n \"XIDC\",\n \"XID_Start\",\n \"XIDS\"\n ],\n \"General_Category\": [\n \"Cased_Letter\",\n \"LC\",\n \"Close_Punctuation\",\n \"Pe\",\n \"Connector_Punctuation\",\n \"Pc\",\n \"Control\",\n \"Cc\",\n \"cntrl\",\n \"Currency_Symbol\",\n \"Sc\",\n \"Dash_Punctuation\",\n \"Pd\",\n \"Decimal_Number\",\n \"Nd\",\n \"digit\",\n \"Enclosing_Mark\",\n \"Me\",\n \"Final_Punctuation\",\n \"Pf\",\n \"Format\",\n \"Cf\",\n \"Initial_Punctuation\",\n \"Pi\",\n \"Letter\",\n \"L\",\n \"Letter_Number\",\n \"Nl\",\n \"Line_Separator\",\n \"Zl\",\n \"Lowercase_Letter\",\n \"Ll\",\n \"Mark\",\n \"M\",\n \"Combining_Mark\",\n \"Math_Symbol\",\n \"Sm\",\n \"Modifier_Letter\",\n \"Lm\",\n \"Modifier_Symbol\",\n \"Sk\",\n \"Nonspacing_Mark\",\n \"Mn\",\n \"Number\",\n \"N\",\n \"Open_Punctuation\",\n \"Ps\",\n \"Other\",\n \"C\",\n \"Other_Letter\",\n \"Lo\",\n \"Other_Number\",\n \"No\",\n \"Other_Punctuation\",\n \"Po\",\n \"Other_Symbol\",\n \"So\",\n \"Paragraph_Separator\",\n \"Zp\",\n \"Private_Use\",\n \"Co\",\n \"Punctuation\",\n \"P\",\n \"punct\",\n \"Separator\",\n \"Z\",\n \"Space_Separator\",\n \"Zs\",\n \"Spacing_Mark\",\n \"Mc\",\n \"Surrogate\",\n \"Cs\",\n \"Symbol\",\n \"S\",\n \"Titlecase_Letter\",\n \"Lt\",\n \"Unassigned\",\n \"Cn\",\n \"Uppercase_Letter\",\n \"Lu\"\n ],\n \"Script\": [\n \"Adlam\",\n \"Adlm\",\n \"Ahom\",\n \"Anatolian_Hieroglyphs\",\n \"Hluw\",\n \"Arabic\",\n \"Arab\",\n \"Armenian\",\n \"Armn\",\n \"Avestan\",\n \"Avst\",\n \"Balinese\",\n \"Bali\",\n \"Bamum\",\n \"Bamu\",\n \"Bassa_Vah\",\n \"Bass\",\n \"Batak\",\n \"Batk\",\n \"Bengali\",\n \"Beng\",\n \"Bhaiksuki\",\n \"Bhks\",\n \"Bopomofo\",\n \"Bopo\",\n \"Brahmi\",\n \"Brah\",\n \"Braille\",\n \"Brai\",\n \"Buginese\",\n \"Bugi\",\n \"Buhid\",\n \"Buhd\",\n \"Canadian_Aboriginal\",\n \"Cans\",\n \"Carian\",\n \"Cari\",\n \"Caucasian_Albanian\",\n \"Aghb\",\n \"Chakma\",\n \"Cakm\",\n \"Cham\",\n \"Cherokee\",\n \"Cher\",\n \"Common\",\n \"Zyyy\",\n \"Coptic\",\n \"Copt\",\n \"Qaac\",\n \"Cuneiform\",\n \"Xsux\",\n \"Cypriot\",\n \"Cprt\",\n \"Cyrillic\",\n \"Cyrl\",\n \"Deseret\",\n \"Dsrt\",\n \"Devanagari\",\n \"Deva\",\n \"Duployan\",\n \"Dupl\",\n \"Egyptian_Hieroglyphs\",\n \"Egyp\",\n \"Elbasan\",\n \"Elba\",\n \"Ethiopic\",\n \"Ethi\",\n \"Georgian\",\n \"Geor\",\n \"Glagolitic\",\n \"Glag\",\n \"Gothic\",\n \"Goth\",\n \"Grantha\",\n \"Gran\",\n \"Greek\",\n \"Grek\",\n \"Gujarati\",\n \"Gujr\",\n \"Gurmukhi\",\n \"Guru\",\n \"Han\",\n \"Hani\",\n \"Hangul\",\n \"Hang\",\n \"Hanunoo\",\n \"Hano\",\n \"Hatran\",\n \"Hatr\",\n \"Hebrew\",\n \"Hebr\",\n \"Hiragana\",\n \"Hira\",\n \"Imperial_Aramaic\",\n \"Armi\",\n \"Inherited\",\n \"Zinh\",\n \"Qaai\",\n \"Inscriptional_Pahlavi\",\n \"Phli\",\n \"Inscriptional_Parthian\",\n \"Prti\",\n \"Javanese\",\n \"Java\",\n \"Kaithi\",\n \"Kthi\",\n \"Kannada\",\n \"Knda\",\n \"Katakana\",\n \"Kana\",\n \"Kayah_Li\",\n \"Kali\",\n \"Kharoshthi\",\n \"Khar\",\n \"Khmer\",\n \"Khmr\",\n \"Khojki\",\n \"Khoj\",\n \"Khudawadi\",\n \"Sind\",\n \"Lao\",\n \"Laoo\",\n \"Latin\",\n \"Latn\",\n \"Lepcha\",\n \"Lepc\",\n \"Limbu\",\n \"Limb\",\n \"Linear_A\",\n \"Lina\",\n \"Linear_B\",\n \"Linb\",\n \"Lisu\",\n \"Lycian\",\n \"Lyci\",\n \"Lydian\",\n \"Lydi\",\n \"Mahajani\",\n \"Mahj\",\n \"Malayalam\",\n \"Mlym\",\n \"Mandaic\",\n \"Mand\",\n \"Manichaean\",\n \"Mani\",\n \"Marchen\",\n \"Marc\",\n \"Masaram_Gondi\",\n \"Gonm\",\n \"Meetei_Mayek\",\n \"Mtei\",\n \"Mende_Kikakui\",\n \"Mend\",\n \"Meroitic_Cursive\",\n \"Merc\",\n \"Meroitic_Hieroglyphs\",\n \"Mero\",\n \"Miao\",\n \"Plrd\",\n \"Modi\",\n \"Mongolian\",\n \"Mong\",\n \"Mro\",\n \"Mroo\",\n \"Multani\",\n \"Mult\",\n \"Myanmar\",\n \"Mymr\",\n \"Nabataean\",\n \"Nbat\",\n \"New_Tai_Lue\",\n \"Talu\",\n \"Newa\",\n \"Nko\",\n \"Nkoo\",\n \"Nushu\",\n \"Nshu\",\n \"Ogham\",\n \"Ogam\",\n \"Ol_Chiki\",\n \"Olck\",\n \"Old_Hungarian\",\n \"Hung\",\n \"Old_Italic\",\n \"Ital\",\n \"Old_North_Arabian\",\n \"Narb\",\n \"Old_Permic\",\n \"Perm\",\n \"Old_Persian\",\n \"Xpeo\",\n \"Old_South_Arabian\",\n \"Sarb\",\n \"Old_Turkic\",\n \"Orkh\",\n \"Oriya\",\n \"Orya\",\n \"Osage\",\n \"Osge\",\n \"Osmanya\",\n \"Osma\",\n \"Pahawh_Hmong\",\n \"Hmng\",\n \"Palmyrene\",\n \"Palm\",\n \"Pau_Cin_Hau\",\n \"Pauc\",\n \"Phags_Pa\",\n \"Phag\",\n \"Phoenician\",\n \"Phnx\",\n \"Psalter_Pahlavi\",\n \"Phlp\",\n \"Rejang\",\n \"Rjng\",\n \"Runic\",\n \"Runr\",\n \"Samaritan\",\n \"Samr\",\n \"Saurashtra\",\n \"Saur\",\n \"Sharada\",\n \"Shrd\",\n \"Shavian\",\n \"Shaw\",\n \"Siddham\",\n \"Sidd\",\n \"SignWriting\",\n \"Sgnw\",\n \"Sinhala\",\n \"Sinh\",\n \"Sora_Sompeng\",\n \"Sora\",\n \"Soyombo\",\n \"Soyo\",\n \"Sundanese\",\n \"Sund\",\n \"Syloti_Nagri\",\n \"Sylo\",\n \"Syriac\",\n \"Syrc\",\n \"Tagalog\",\n \"Tglg\",\n \"Tagbanwa\",\n \"Tagb\",\n \"Tai_Le\",\n \"Tale\",\n \"Tai_Tham\",\n \"Lana\",\n \"Tai_Viet\",\n \"Tavt\",\n \"Takri\",\n \"Takr\",\n \"Tamil\",\n \"Taml\",\n \"Tangut\",\n \"Tang\",\n \"Telugu\",\n \"Telu\",\n \"Thaana\",\n \"Thaa\",\n \"Thai\",\n \"Tibetan\",\n \"Tibt\",\n \"Tifinagh\",\n \"Tfng\",\n \"Tirhuta\",\n \"Tirh\",\n \"Ugaritic\",\n \"Ugar\",\n \"Vai\",\n \"Vaii\",\n \"Warang_Citi\",\n \"Wara\",\n \"Yi\",\n \"Yiii\",\n \"Zanabazar_Square\",\n \"Zanb\"\n ]\n}\nArray.prototype.push.apply(data.$LONE, data.General_Category)\ndata.gc = data.General_Category\ndata.sc = data.Script_Extensions = data.scx = data.Script\n\nexport default data\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier.js\"\nimport {Parser} from \"./state.js\"\nimport UNICODE_PROPERTY_VALUES from \"./unicode-property-data.js\"\n\nconst pp = Parser.prototype\n\nexport class RegExpValidationState {\n constructor(parser) {\n this.parser = parser\n this.validFlags = `gim${parser.options.ecmaVersion >= 6 ? \"uy\" : \"\"}${parser.options.ecmaVersion >= 9 ? \"s\" : \"\"}`\n this.source = \"\"\n this.flags = \"\"\n this.start = 0\n this.switchU = false\n this.switchN = false\n this.pos = 0\n this.lastIntValue = 0\n this.lastStringValue = \"\"\n this.lastAssertionIsQuantifiable = false\n this.numCapturingParens = 0\n this.maxBackReference = 0\n this.groupNames = []\n this.backReferenceNames = []\n }\n\n reset(start, pattern, flags) {\n const unicode = flags.indexOf(\"u\") !== -1\n this.start = start | 0\n this.source = pattern + \"\"\n this.flags = flags\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9\n }\n\n raise(message) {\n this.parser.raiseRecoverable(this.start, `Invalid regular expression: /${this.source}/: ${message}`)\n }\n\n // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n at(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return -1\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n }\n\n nextIndex(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return l\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n }\n\n current() {\n return this.at(this.pos)\n }\n\n lookahead() {\n return this.at(this.nextIndex(this.pos))\n }\n\n advance() {\n this.pos = this.nextIndex(this.pos)\n }\n\n eat(ch) {\n if (this.current() === ch) {\n this.advance()\n return true\n }\n return false\n }\n}\n\nfunction codePointToString(ch) {\n if (ch <= 0xFFFF) return String.fromCharCode(ch)\n ch -= 0x10000\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpFlags = function(state) {\n const validFlags = state.validFlags\n const flags = state.flags\n\n for (let i = 0; i < flags.length; i++) {\n const flag = flags.charAt(i)\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\")\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\")\n }\n }\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpPattern = function(state) {\n this.regexp_pattern(state)\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true\n this.regexp_pattern(state)\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp.regexp_pattern = function(state) {\n state.pos = 0\n state.lastIntValue = 0\n state.lastStringValue = \"\"\n state.lastAssertionIsQuantifiable = false\n state.numCapturingParens = 0\n state.maxBackReference = 0\n state.groupNames.length = 0\n state.backReferenceNames.length = 0\n\n this.regexp_disjunction(state)\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\")\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\")\n }\n for (const name of state.backReferenceNames) {\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\")\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp.regexp_disjunction = function(state) {\n this.regexp_alternative(state)\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state)\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n ;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\")\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state)\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp.regexp_eatAssertion = function(state) {\n const start = state.pos\n state.lastAssertionIsQuantifiable = false\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n let lookbehind = false\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */)\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state)\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\")\n }\n state.lastAssertionIsQuantifiable = !lookbehind\n return true\n }\n }\n\n state.pos = start\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp.regexp_eatQuantifier = function(state, noError = false) {\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n}\npp.regexp_eatBracedQuantifier = function(state, noError) {\n const start = state.pos\n if (state.eat(0x7B /* { */)) {\n let min = 0, max = -1\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\")\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n}\npp.regexp_eatReverseSolidusAtomEscape = function(state) {\n const start = state.pos\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatUncapturingGroup = function(state) {\n const start = state.pos\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\")\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state)\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\")\n }\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1\n return true\n }\n state.raise(\"Unterminated group\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp.regexp_eatSyntaxCharacter = function(state) {\n const ch = state.current()\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n return false\n}\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp.regexp_eatPatternCharacters = function(state) {\n const start = state.pos\n let ch = 0\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance()\n }\n return state.pos !== start\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp.regexp_eatExtendedPatternCharacter = function(state) {\n const ch = state.current()\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance()\n return true\n }\n return false\n}\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\")\n }\n state.groupNames.push(state.lastStringValue)\n return\n }\n state.raise(\"Invalid group\")\n }\n}\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\"\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\")\n }\n return false\n}\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\"\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n }\n return true\n }\n return false\n}\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp.regexp_eatRegExpIdentifierStart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// <ZWNJ>\n// <ZWJ>\npp.regexp_eatRegExpIdentifierPart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\")\n }\n state.raise(\"Invalid escape\")\n }\n return false\n}\npp.regexp_eatBackReference = function(state) {\n const start = state.pos\n if (this.regexp_eatDecimalEscape(state)) {\n const n = state.lastIntValue\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue)\n return true\n }\n state.raise(\"Invalid named reference\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n}\npp.regexp_eatCControlLetter = function(state) {\n const start = state.pos\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp.regexp_eatControlEscape = function(state) {\n const ch = state.current()\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09 /* \\t */\n state.advance()\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A /* \\n */\n state.advance()\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B /* \\v */\n state.advance()\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C /* \\f */\n state.advance()\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D /* \\r */\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp.regexp_eatControlLetter = function(state) {\n const ch = state.current()\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp.regexp_eatRegExpUnicodeEscapeSequence = function(state) {\n const start = state.pos\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n const lead = state.lastIntValue\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n const leadSurrogateEnd = state.pos\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n const trail = state.lastIntValue\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000\n return true\n }\n }\n state.pos = leadSurrogateEnd\n state.lastIntValue = lead\n }\n return true\n }\n if (\n state.switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\")\n }\n state.pos = start\n }\n\n return false\n}\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F /* / */\n return true\n }\n return false\n }\n\n const ch = state.current()\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0\n let ch = state.current()\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp.regexp_eatCharacterClassEscape = function(state) {\n const ch = state.current()\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1\n state.advance()\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1\n state.advance()\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\")\n }\n\n return false\n}\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp.regexp_eatUnicodePropertyValueExpression = function(state) {\n const start = state.pos\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n const name = state.lastStringValue\n if (this.regexp_eatUnicodePropertyValue(state)) {\n const value = state.lastStringValue\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value)\n return true\n }\n }\n state.pos = start\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n const nameOrValue = state.lastStringValue\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n return true\n }\n return false\n}\npp.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!UNICODE_PROPERTY_VALUES.hasOwnProperty(name) || UNICODE_PROPERTY_VALUES[name].indexOf(value) === -1) {\n state.raise(\"Invalid property name\")\n }\n}\npp.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (UNICODE_PROPERTY_VALUES.$LONE.indexOf(nameOrValue) === -1) {\n state.raise(\"Invalid property name\")\n }\n}\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp.regexp_eatUnicodePropertyName = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatUnicodePropertyValue = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */)\n this.regexp_classRanges(state)\n if (state.eat(0x5D /* [ */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp.regexp_classRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n const left = state.lastIntValue\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n const right = state.lastIntValue\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\")\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\")\n }\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp.regexp_eatClassAtom = function(state) {\n const start = state.pos\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n const ch = state.current()\n if (ch === 0x63 /* c */ || isOctalDigit(ch)) {\n state.raise(\"Invalid class escape\")\n }\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n\n const ch = state.current()\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp.regexp_eatClassEscape = function(state) {\n const start = state.pos\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08 /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp.regexp_eatClassControlLetter = function(state) {\n const ch = state.current()\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatHexEscapeSequence = function(state) {\n const start = state.pos\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp.regexp_eatDecimalDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp.regexp_eatHexDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n const n1 = state.lastIntValue\n if (this.regexp_eatOctalDigit(state)) {\n const n2 = state.lastIntValue\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue\n } else {\n state.lastIntValue = n1 * 8 + n2\n }\n } else {\n state.lastIntValue = n1\n }\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp.regexp_eatOctalDigit = function(state) {\n const ch = state.current()\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30 /* 0 */\n state.advance()\n return true\n }\n state.lastIntValue = 0\n return false\n}\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatFixedHexDigits = function(state, length) {\n const start = state.pos\n state.lastIntValue = 0\n for (let i = 0; i < length; ++i) {\n const ch = state.current()\n if (!isHexDigit(ch)) {\n state.pos = start\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return true\n}\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier\"\nimport {types as tt, keywords as keywordTypes} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\nimport {RegExpValidationState} from \"./regexp\"\nimport {lineBreak, lineBreakG, isNewLine, nonASCIIwhitespace} from \"./whitespace\"\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(p) {\n this.type = p.type\n this.value = p.value\n this.start = p.start\n this.end = p.end\n if (p.options.locations)\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc)\n if (p.options.ranges)\n this.range = [p.start, p.end]\n }\n}\n\n// ## Tokenizer\n\nconst pp = Parser.prototype\n\n// Move to the next token\n\npp.next = function() {\n if (this.options.onToken)\n this.options.onToken(new Token(this))\n\n this.lastTokEnd = this.end\n this.lastTokStart = this.start\n this.lastTokEndLoc = this.endLoc\n this.lastTokStartLoc = this.startLoc\n this.nextToken()\n}\n\npp.getToken = function() {\n this.next()\n return new Token(this)\n}\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n pp[Symbol.iterator] = function() {\n return {\n next: () => {\n let token = this.getToken()\n return {\n done: token.type === tt.eof,\n value: token\n }\n }\n }\n }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.curContext = function() {\n return this.context[this.context.length - 1]\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n let curContext = this.curContext()\n if (!curContext || !curContext.preserveSpace) this.skipSpace()\n\n this.start = this.pos\n if (this.options.locations) this.startLoc = this.curPosition()\n if (this.pos >= this.input.length) return this.finishToken(tt.eof)\n\n if (curContext.override) return curContext.override(this)\n else this.readToken(this.fullCharCodeAtPos())\n}\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n return this.readWord()\n\n return this.getTokenFromCode(code)\n}\n\npp.fullCharCodeAtPos = function() {\n let code = this.input.charCodeAt(this.pos)\n if (code <= 0xd7ff || code >= 0xe000) return code\n let next = this.input.charCodeAt(this.pos + 1)\n return (code << 10) + next - 0x35fdc00\n}\n\npp.skipBlockComment = function() {\n let startLoc = this.options.onComment && this.curPosition()\n let start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2)\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\")\n this.pos = end + 2\n if (this.options.locations) {\n lineBreakG.lastIndex = start\n let match\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine\n this.lineStart = match.index + match[0].length\n }\n }\n if (this.options.onComment)\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition())\n}\n\npp.skipLineComment = function(startSkip) {\n let start = this.pos\n let startLoc = this.options.onComment && this.curPosition()\n let ch = this.input.charCodeAt(this.pos += startSkip)\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos)\n }\n if (this.options.onComment)\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition())\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n let ch = this.input.charCodeAt(this.pos)\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos\n }\n case 10: case 8232: case 8233:\n ++this.pos\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment()\n break\n case 47:\n this.skipLineComment(2)\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos\n } else {\n break loop\n }\n }\n }\n}\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos\n if (this.options.locations) this.endLoc = this.curPosition()\n let prevType = this.type\n this.type = type\n this.value = val\n\n this.updateContext(prevType)\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n let next = this.input.charCodeAt(this.pos + 1)\n if (next >= 48 && next <= 57) return this.readNumber(true)\n let next2 = this.input.charCodeAt(this.pos + 2)\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3\n return this.finishToken(tt.ellipsis)\n } else {\n ++this.pos\n return this.finishToken(tt.dot)\n }\n}\n\npp.readToken_slash = function() { // '/'\n let next = this.input.charCodeAt(this.pos + 1)\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.slash, 1)\n}\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n let tokentype = code === 42 ? tt.star : tt.modulo\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size\n tokentype = tt.starstar\n next = this.input.charCodeAt(this.pos + 2)\n }\n\n if (next === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tokentype, size)\n}\n\npp.readToken_pipe_amp = function(code) { // '|&'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)\n}\n\npp.readToken_caret = function() { // '^'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.bitwiseXOR, 1)\n}\n\npp.readToken_plus_min = function(code) { // '+-'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4)\n this.skipSpace()\n return this.nextToken()\n }\n if (next === 61) size = 2\n return this.finishOp(tt.relational, size)\n}\n\npp.readToken_eq_excl = function(code) { // '=!'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2\n return this.finishToken(tt.arrow)\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)\n}\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(tt.parenL)\n case 41: ++this.pos; return this.finishToken(tt.parenR)\n case 59: ++this.pos; return this.finishToken(tt.semi)\n case 44: ++this.pos; return this.finishToken(tt.comma)\n case 91: ++this.pos; return this.finishToken(tt.bracketL)\n case 93: ++this.pos; return this.finishToken(tt.bracketR)\n case 123: ++this.pos; return this.finishToken(tt.braceL)\n case 125: ++this.pos; return this.finishToken(tt.braceR)\n case 58: ++this.pos; return this.finishToken(tt.colon)\n case 63: ++this.pos; return this.finishToken(tt.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) break\n ++this.pos\n return this.finishToken(tt.backQuote)\n\n case 48: // '0'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(tt.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\")\n}\n\npp.finishOp = function(type, size) {\n let str = this.input.slice(this.pos, this.pos + size)\n this.pos += size\n return this.finishToken(type, str)\n}\n\npp.readRegexp = function() {\n let escaped, inClass, start = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\")\n let ch = this.input.charAt(this.pos)\n if (lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\")\n if (!escaped) {\n if (ch === \"[\") inClass = true\n else if (ch === \"]\" && inClass) inClass = false\n else if (ch === \"/\" && !inClass) break\n escaped = ch === \"\\\\\"\n } else escaped = false\n ++this.pos\n }\n let pattern = this.input.slice(start, this.pos)\n ++this.pos\n let flagsStart = this.pos\n let flags = this.readWord1()\n if (this.containsEsc) this.unexpected(flagsStart)\n\n // Validate pattern\n const state = this.regexpState || (this.regexpState = new RegExpValidationState(this))\n state.reset(start, pattern, flags)\n this.validateRegExpFlags(state)\n this.validateRegExpPattern(state)\n\n // Create Literal#value property value.\n let value = null\n try {\n value = new RegExp(pattern, flags)\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(tt.regexp, {pattern, flags, value})\n}\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len) {\n let start = this.pos, total = 0\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n let code = this.input.charCodeAt(this.pos), val\n if (code >= 97) val = code - 97 + 10 // a\n else if (code >= 65) val = code - 65 + 10 // A\n else if (code >= 48 && code <= 57) val = code - 48 // 0-9\n else val = Infinity\n if (val >= radix) break\n ++this.pos\n total = total * radix + val\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null\n\n return total\n}\n\npp.readRadixNumber = function(radix) {\n this.pos += 2 // 0x\n let val = this.readInt(radix)\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix)\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n return this.finishToken(tt.num, val)\n}\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n let start = this.pos\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\")\n let octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48\n if (octal && this.strict) this.raise(start, \"Invalid number\")\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) octal = false\n let next = this.input.charCodeAt(this.pos)\n if (next === 46 && !octal) { // '.'\n ++this.pos\n this.readInt(10)\n next = this.input.charCodeAt(this.pos)\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos)\n if (next === 43 || next === 45) ++this.pos // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\")\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n\n let str = this.input.slice(start, this.pos)\n let val = octal ? parseInt(str, 8) : parseFloat(str)\n return this.finishToken(tt.num, val)\n}\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n let ch = this.input.charCodeAt(this.pos), code\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) this.unexpected()\n let codePos = ++this.pos\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos)\n ++this.pos\n if (code > 0x10FFFF) this.invalidStringToken(codePos, \"Code point out of bounds\")\n } else {\n code = this.readHexChar(4)\n }\n return code\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code)\n code -= 0x10000\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp.readString = function(quote) {\n let out = \"\", chunkStart = ++this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === quote) break\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(false)\n chunkStart = this.pos\n } else {\n if (isNewLine(ch, this.options.ecmaVersion >= 10)) this.raise(this.start, \"Unterminated string constant\")\n ++this.pos\n }\n }\n out += this.input.slice(chunkStart, this.pos++)\n return this.finishToken(tt.string, out)\n}\n\n// Reads template string tokens.\n\nconst INVALID_TEMPLATE_ESCAPE_ERROR = {}\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true\n try {\n this.readTmplToken()\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken()\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false\n}\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message)\n }\n}\n\npp.readTmplToken = function() {\n let out = \"\", chunkStart = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === tt.template || this.type === tt.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2\n return this.finishToken(tt.dollarBraceL)\n } else {\n ++this.pos\n return this.finishToken(tt.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos)\n return this.finishToken(tt.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(true)\n chunkStart = this.pos\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos)\n ++this.pos\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos\n case 10:\n out += \"\\n\"\n break\n default:\n out += String.fromCharCode(ch)\n break\n }\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n chunkStart = this.pos\n } else {\n ++this.pos\n }\n }\n}\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\")\n}\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n let ch = this.input.charCodeAt(++this.pos)\n ++this.pos\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n let octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]\n let octal = parseInt(octalStr, 8)\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1)\n octal = parseInt(octalStr, 8)\n }\n this.pos += octalStr.length - 1\n ch = this.input.charCodeAt(this.pos)\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n )\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n}\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n let codePos = this.pos\n let n = this.readInt(16, len)\n if (n === null) this.invalidStringToken(codePos, \"Bad character escape sequence\")\n return n\n}\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false\n let word = \"\", first = true, chunkStart = this.pos\n let astral = this.options.ecmaVersion >= 6\n while (this.pos < this.input.length) {\n let ch = this.fullCharCodeAtPos()\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true\n word += this.input.slice(chunkStart, this.pos)\n let escStart = this.pos\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\")\n ++this.pos\n let esc = this.readCodePoint()\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n this.invalidStringToken(escStart, \"Invalid Unicode escape\")\n word += codePointToString(esc)\n chunkStart = this.pos\n } else {\n break\n }\n first = false\n }\n return word + this.input.slice(chunkStart, this.pos)\n}\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n let word = this.readWord1()\n let type = tt.name\n if (this.keywords.test(word)) {\n if (this.containsEsc) this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word)\n type = keywordTypes[word]\n }\n return this.finishToken(type, word)\n}\n","// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\nimport {Parser} from \"./state\"\nimport \"./parseutil\"\nimport \"./statement\"\nimport \"./lval\"\nimport \"./expression\"\nimport \"./location\"\nimport \"./scope\"\n\nexport {Parser} from \"./state\"\nexport {defaultOptions} from \"./options\"\nexport {Position, SourceLocation, getLineInfo} from \"./locutil\"\nexport {Node} from \"./node\"\nexport {TokenType, types as tokTypes, keywords as keywordTypes} from \"./tokentype\"\nexport {TokContext, types as tokContexts} from \"./tokencontext\"\nexport {isIdentifierChar, isIdentifierStart} from \"./identifier\"\nexport {Token} from \"./tokenize\"\nexport {isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace} from \"./whitespace\"\n\nexport const version = \"6.0.6\"\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nexport function parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nexport function parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nexport function tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n"],"names":["const","let","keywords","tt","this","pp","init","label","node","empty","scope","types","codePointToString","UNICODE_PROPERTY_VALUES","ch","keywordTypes"],"mappings":";;;;;;AAAA;;AAEA,AAAOA,IAAM,aAAa,GAAG;EAC3B,CAAC,EAAE,qNAAqN;EACxN,CAAC,EAAE,8CAA8C;EACjD,CAAC,EAAE,MAAM;EACT,MAAM,EAAE,wEAAwE;EAChF,UAAU,EAAE,gBAAgB;EAC7B;;;;AAIDA,IAAM,oBAAoB,GAAG,8KAA6K;;AAE1M,AAAOA,IAAM,QAAQ,GAAG;EACtB,CAAC,EAAE,oBAAoB;EACvB,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;EACrE;;AAED,AAAOA,IAAM,yBAAyB,GAAG,kBAAiB;;;;;;;;;;AAU1DC,IAAI,4BAA4B,GAAG,4tIAA2tI;AAC9vIA,IAAI,uBAAuB,GAAG,sjFAAqjF;;AAEnlFD,IAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,EAAC;AACpFA,IAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,EAAC;;AAEzG,4BAA4B,GAAG,uBAAuB,GAAG,KAAI;;;;;;;;;AAS7DA,IAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC;;;AAGvqCA,IAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,C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"} \ No newline at end of file
+{"version":3,"file":"acorn.js","sources":["../src/identifier.js","../src/tokentype.js","../src/whitespace.js","../src/util.js","../src/locutil.js","../src/options.js","../src/scopeflags.js","../src/state.js","../src/parseutil.js","../src/statement.js","../src/lval.js","../src/expression.js","../src/location.js","../src/scope.js","../src/node.js","../src/tokencontext.js","../src/unicode-property-data.js","../src/regexp.js","../src/tokenize.js","../src/index.js"],"sourcesContent":["// Reserved word lists for various dialects of the language\n\nexport const reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n}\n\n// And the keywords\n\nconst ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n\nexport const keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\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\"\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\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\"\n\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\")\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\")\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,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]\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,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]\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n let pos = 0x10000\n for (let i = 0; i < set.length; i += 2) {\n pos += set[i]\n if (pos > code) return false\n pos += set[i + 1]\n if (pos >= code) return true\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code, astral) {\n if (code < 65) return code === 36\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code, astral) {\n if (code < 48) return code === 36\n if (code < 58) return true\n if (code < 65) return false\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n","// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nexport class TokenType {\n constructor(label, conf = {}) {\n this.label = label\n this.keyword = conf.keyword\n this.beforeExpr = !!conf.beforeExpr\n this.startsExpr = !!conf.startsExpr\n this.isLoop = !!conf.isLoop\n this.isAssign = !!conf.isAssign\n this.prefix = !!conf.prefix\n this.postfix = !!conf.postfix\n this.binop = conf.binop || null\n this.updateContext = null\n }\n}\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nconst beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}\n\n// Map keyword names to token types.\n\nexport const keywords = {}\n\n// Succinct definitions of keyword token types\nfunction kw(name, options = {}) {\n options.keyword = name\n return keywords[name] = new TokenType(name, options)\n}\n\nexport const types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n}\n","// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nexport const lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\")\n\nexport function isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))\n}\n\nexport const nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g\n","const {hasOwnProperty, toString} = Object.prototype\n\n// Checks if an object has a property.\n\nexport function has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nexport const isArray = Array.isArray || ((obj) => (\n toString.call(obj) === \"[object Array]\"\n))\n\nexport function wordsRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n","import {lineBreakG} from \"./whitespace\"\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n constructor(line, col) {\n this.line = line\n this.column = col\n }\n\n offset(n) {\n return new Position(this.line, this.column + n)\n }\n}\n\nexport class SourceLocation {\n constructor(p, start, end) {\n this.start = start\n this.end = end\n if (p.sourceFile !== null) this.source = p.sourceFile\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input, offset) {\n for (let line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur\n let match = lineBreakG.exec(input)\n if (match && match.index < offset) {\n ++line\n cur = match.index + match[0].length\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n","import {has, isArray} from \"./util\"\nimport {SourceLocation} from \"./locutil\"\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport const defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 9.\n ecmaVersion: 9,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts) {\n let options = {}\n\n for (let opt in defaultOptions)\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]\n\n if (options.ecmaVersion >= 2015)\n options.ecmaVersion -= 2009\n\n if (options.allowReserved == null)\n options.allowReserved = options.ecmaVersion < 5\n\n if (isArray(options.onToken)) {\n let tokens = options.onToken\n options.onToken = (token) => tokens.push(token)\n }\n if (isArray(options.onComment))\n options.onComment = pushComment(options, options.onComment)\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n let comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n }\n if (options.locations)\n comment.loc = new SourceLocation(this, startLoc, endLoc)\n if (options.ranges)\n comment.range = [start, end]\n array.push(comment)\n }\n}\n","// Each scope gets a bitset that may contain these flags\nexport const\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128\n\nexport function functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nexport const\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5 // Special case for function names as bound inside the function\n","import {reservedWords, keywords} from \"./identifier\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\nimport {getOptions} from \"./options\"\nimport {wordsRegexp} from \"./util\"\nimport {SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_SUPER, SCOPE_DIRECT_SUPER} from \"./scopeflags\"\n\nexport class Parser {\n constructor(options, input, startPos) {\n this.options = options = getOptions(options)\n this.sourceFile = options.sourceFile\n this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])\n let reserved = \"\"\n if (!options.allowReserved) {\n for (let v = options.ecmaVersion;; v--)\n if (reserved = reservedWords[v]) break\n if (options.sourceType === \"module\") reserved += \" await\"\n }\n this.reservedWords = wordsRegexp(reserved)\n let reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict\n this.reservedWordsStrict = wordsRegexp(reservedStrict)\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind)\n this.input = String(input)\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length\n } else {\n this.pos = this.lineStart = 0\n this.curLine = 1\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof\n // For tokens that include more information than their type, the value\n this.value = null\n // Its start and end offset\n this.start = this.end = this.pos\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition()\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null\n this.lastTokStart = this.lastTokEnd = this.pos\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext()\n this.exprAllowed = true\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\"\n this.strict = this.inModule || this.strictDirective(this.pos)\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0\n // Labels in scope.\n this.labels = []\n // Thus-far undefined exports.\n this.undefinedExports = {}\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n this.skipLineComment(2)\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = []\n this.enterScope(SCOPE_TOP)\n\n // For RegExp validation\n this.regexpState = null\n }\n\n parse() {\n let node = this.options.program || this.startNode()\n this.nextToken()\n return this.parseTopLevel(node)\n }\n\n get inFunction() { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }\n get inGenerator() { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }\n get inAsync() { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }\n get allowSuper() { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }\n get allowDirectSuper() { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }\n get treatFunctionsAsVar() { return this.treatFunctionsAsVarInScope(this.currentScope()) }\n\n // Switch to a getter for 7.0.0.\n inNonArrowFunction() { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }\n\n static extend(...plugins) {\n let cls = this\n for (let i = 0; i < plugins.length; i++) cls = plugins[i](cls)\n return cls\n }\n\n static parse(input, options) {\n return new this(options, input).parse()\n }\n\n static parseExpressionAt(input, pos, options) {\n let parser = new this(options, input, pos)\n parser.nextToken()\n return parser.parseExpression()\n }\n\n static tokenizer(input, options) {\n return new this(options, input)\n }\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\n\nconst pp = Parser.prototype\n\n// ## Parser utilities\n\nconst literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\")/\npp.strictDirective = function(start) {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n let match = literal.exec(this.input.slice(start))\n if (!match) return false\n if ((match[1] || match[2]) === \"use strict\") return true\n start += match[0].length\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n if (this.input[start] === \";\")\n start++\n }\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next()\n return true\n } else {\n return false\n }\n}\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === tt.name && this.value === name && !this.containsEsc\n}\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) return false\n this.next()\n return true\n}\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) this.unexpected()\n}\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === tt.eof ||\n this.type === tt.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)\n return true\n }\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()\n}\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)\n if (!notNext)\n this.next()\n return true\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected()\n}\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\")\n}\n\nexport function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) return\n if (refDestructuringErrors.trailingComma > -1)\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\")\n let parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind\n if (parens > -1) this.raiseRecoverable(parens, \"Parenthesized pattern\")\n}\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) return false\n let {shorthandAssign, doubleProto} = refDestructuringErrors\n if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0\n if (shorthandAssign >= 0)\n this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\")\n if (doubleProto >= 0)\n this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\")\n}\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\")\n if (this.awaitPos)\n this.raise(this.awaitPos, \"Await expression cannot be a default value\")\n}\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n return this.isSimpleAssignTarget(expr.expression)\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\nimport {isIdentifierStart, isIdentifierChar, keywordRelationalOperator} from \"./identifier\"\nimport {has} from \"./util\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {functionFlags, SCOPE_SIMPLE_CATCH, BIND_SIMPLE_CATCH, BIND_LEXICAL, BIND_VAR, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function(node) {\n let exports = {}\n if (!node.body) node.body = []\n while (this.type !== tt.eof) {\n let stmt = this.parseStatement(null, true, exports)\n node.body.push(stmt)\n }\n if (this.inModule)\n for (let name of Object.keys(this.undefinedExports))\n this.raiseRecoverable(this.undefinedExports[name].start, `Export '${name}' is not defined`)\n this.adaptDirectivePrologue(node.body)\n this.next()\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType\n }\n return this.finishNode(node, \"Program\")\n}\n\nconst loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"}\n\npp.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) return false\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91) return true // '['\n if (context) return false\n\n if (nextCh === 123) return true // '{'\n if (isIdentifierStart(nextCh, true)) {\n let pos = next + 1\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos\n let ident = this.input.slice(next, pos)\n if (!keywordRelationalOperator.test(ident)) return true\n }\n return false\n}\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n return false\n\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function(context, topLevel, exports) {\n let starttype = this.type, node = this.startNode(), kind\n\n if (this.isLet(context)) {\n starttype = tt._var\n kind = \"let\"\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case tt._debugger: return this.parseDebuggerStatement(node)\n case tt._do: return this.parseDoStatement(node)\n case tt._for: return this.parseForStatement(node)\n case tt._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) this.unexpected()\n return this.parseFunctionStatement(node, false, !context)\n case tt._class:\n if (context) this.unexpected()\n return this.parseClass(node, true)\n case tt._if: return this.parseIfStatement(node)\n case tt._return: return this.parseReturnStatement(node)\n case tt._switch: return this.parseSwitchStatement(node)\n case tt._throw: return this.parseThrowStatement(node)\n case tt._try: return this.parseTryStatement(node)\n case tt._const: case tt._var:\n kind = kind || this.value\n if (context && kind !== \"var\") this.unexpected()\n return this.parseVarStatement(node, kind)\n case tt._while: return this.parseWhileStatement(node)\n case tt._with: return this.parseWithStatement(node)\n case tt.braceL: return this.parseBlock(true, node)\n case tt.semi: return this.parseEmptyStatement(node)\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\")\n if (!this.inModule)\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\")\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) this.unexpected()\n this.next()\n return this.parseFunctionStatement(node, true, !context)\n }\n\n let maybeName = this.value, expr = this.parseExpression()\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon))\n return this.parseLabeledStatement(node, maybeName, expr, context)\n else return this.parseExpressionStatement(node, expr)\n }\n}\n\npp.parseBreakContinueStatement = function(node, keyword) {\n let isBreak = keyword === \"break\"\n this.next()\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null\n else if (this.type !== tt.name) this.unexpected()\n else {\n node.label = this.parseIdent()\n this.semicolon()\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n let i = 0\n for (; i < this.labels.length; ++i) {\n let lab = this.labels[i]\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break\n if (node.label && isBreak) break\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword)\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n}\n\npp.parseDebuggerStatement = function(node) {\n this.next()\n this.semicolon()\n return this.finishNode(node, \"DebuggerStatement\")\n}\n\npp.parseDoStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"do\")\n this.labels.pop()\n this.expect(tt._while)\n node.test = this.parseParenExpression()\n if (this.options.ecmaVersion >= 6)\n this.eat(tt.semi)\n else\n this.semicolon()\n return this.finishNode(node, \"DoWhileStatement\")\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function(node) {\n this.next()\n let awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual(\"await\")) ? this.lastTokStart : -1\n this.labels.push(loopLabel)\n this.enterScope(0)\n this.expect(tt.parenL)\n if (this.type === tt.semi) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, null)\n }\n let isLet = this.isLet()\n if (this.type === tt._var || this.type === tt._const || isLet) {\n let init = this.startNode(), kind = isLet ? \"let\" : this.value\n this.next()\n this.parseVar(init, true, kind)\n this.finishNode(init, \"VariableDeclaration\")\n if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1 &&\n !(kind !== \"var\" && init.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n }\n let refDestructuringErrors = new DestructuringErrors\n let init = this.parseExpression(true, refDestructuringErrors)\n if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n this.toAssignable(init, false, refDestructuringErrors)\n this.checkLVal(init)\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n}\n\npp.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next()\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n}\n\npp.parseIfStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\")\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null\n return this.finishNode(node, \"IfStatement\")\n}\n\npp.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n this.raise(this.start, \"'return' outside of function\")\n this.next()\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null\n else { node.argument = this.parseExpression(); this.semicolon() }\n return this.finishNode(node, \"ReturnStatement\")\n}\n\npp.parseSwitchStatement = function(node) {\n this.next()\n node.discriminant = this.parseParenExpression()\n node.cases = []\n this.expect(tt.braceL)\n this.labels.push(switchLabel)\n this.enterScope(0)\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur\n for (let sawDefault = false; this.type !== tt.braceR;) {\n if (this.type === tt._case || this.type === tt._default) {\n let isCase = this.type === tt._case\n if (cur) this.finishNode(cur, \"SwitchCase\")\n node.cases.push(cur = this.startNode())\n cur.consequent = []\n this.next()\n if (isCase) {\n cur.test = this.parseExpression()\n } else {\n if (sawDefault) this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\")\n sawDefault = true\n cur.test = null\n }\n this.expect(tt.colon)\n } else {\n if (!cur) this.unexpected()\n cur.consequent.push(this.parseStatement(null))\n }\n }\n this.exitScope()\n if (cur) this.finishNode(cur, \"SwitchCase\")\n this.next() // Closing brace\n this.labels.pop()\n return this.finishNode(node, \"SwitchStatement\")\n}\n\npp.parseThrowStatement = function(node) {\n this.next()\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n this.raise(this.lastTokEnd, \"Illegal newline after throw\")\n node.argument = this.parseExpression()\n this.semicolon()\n return this.finishNode(node, \"ThrowStatement\")\n}\n\n// Reused empty array added for node fields that are always empty.\n\nconst empty = []\n\npp.parseTryStatement = function(node) {\n this.next()\n node.block = this.parseBlock()\n node.handler = null\n if (this.type === tt._catch) {\n let clause = this.startNode()\n this.next()\n if (this.eat(tt.parenL)) {\n clause.param = this.parseBindingAtom()\n let simple = clause.param.type === \"Identifier\"\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0)\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL)\n this.expect(tt.parenR)\n } else {\n if (this.options.ecmaVersion < 10) this.unexpected()\n clause.param = null\n this.enterScope(0)\n }\n clause.body = this.parseBlock(false)\n this.exitScope()\n node.handler = this.finishNode(clause, \"CatchClause\")\n }\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null\n if (!node.handler && !node.finalizer)\n this.raise(node.start, \"Missing catch or finally clause\")\n return this.finishNode(node, \"TryStatement\")\n}\n\npp.parseVarStatement = function(node, kind) {\n this.next()\n this.parseVar(node, false, kind)\n this.semicolon()\n return this.finishNode(node, \"VariableDeclaration\")\n}\n\npp.parseWhileStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"while\")\n this.labels.pop()\n return this.finishNode(node, \"WhileStatement\")\n}\n\npp.parseWithStatement = function(node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\")\n this.next()\n node.object = this.parseParenExpression()\n node.body = this.parseStatement(\"with\")\n return this.finishNode(node, \"WithStatement\")\n}\n\npp.parseEmptyStatement = function(node) {\n this.next()\n return this.finishNode(node, \"EmptyStatement\")\n}\n\npp.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (let label of this.labels)\n if (label.name === maybeName)\n this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\")\n let kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null\n for (let i = this.labels.length - 1; i >= 0; i--) {\n let label = this.labels[i]\n if (label.statementStart === node.start) {\n // Update information about previous labels on this node\n label.statementStart = this.start\n label.kind = kind\n } else break\n }\n this.labels.push({name: maybeName, kind, statementStart: this.start})\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\")\n this.labels.pop()\n node.label = expr\n return this.finishNode(node, \"LabeledStatement\")\n}\n\npp.parseExpressionStatement = function(node, expr) {\n node.expression = expr\n this.semicolon()\n return this.finishNode(node, \"ExpressionStatement\")\n}\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function(createNewLexicalScope = true, node = this.startNode()) {\n node.body = []\n this.expect(tt.braceL)\n if (createNewLexicalScope) this.enterScope(0)\n while (!this.eat(tt.braceR)) {\n let stmt = this.parseStatement(null)\n node.body.push(stmt)\n }\n if (createNewLexicalScope) this.exitScope()\n return this.finishNode(node, \"BlockStatement\")\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function(node, init) {\n node.init = init\n this.expect(tt.semi)\n node.test = this.type === tt.semi ? null : this.parseExpression()\n this.expect(tt.semi)\n node.update = this.type === tt.parenR ? null : this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, \"ForStatement\")\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function(node, init) {\n let type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\"\n this.next()\n if (type === \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" ||\n (init.type === \"VariableDeclaration\" && init.declarations[0].init != null &&\n (this.strict || init.declarations[0].id.type !== \"Identifier\")))\n this.raise(init.start, \"Invalid assignment in for-in loop head\")\n }\n node.left = init\n node.right = type === \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, type)\n}\n\n// Parse a list of variable declarations.\n\npp.parseVar = function(node, isFor, kind) {\n node.declarations = []\n node.kind = kind\n for (;;) {\n let decl = this.startNode()\n this.parseVarId(decl, kind)\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor)\n } else if (kind === \"const\" && !(this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected()\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.type === tt._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\")\n } else {\n decl.init = null\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"))\n if (!this.eat(tt.comma)) break\n }\n return node\n}\n\npp.parseVarId = function(decl, kind) {\n if ((kind === \"const\" || kind === \"let\") && this.isContextual(\"let\")) {\n this.raiseRecoverable(this.start, \"let is disallowed as a lexically bound name\")\n }\n decl.id = this.parseBindingAtom()\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false)\n}\n\nconst FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp.parseFunction = function(node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node)\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === tt.star && (statement & FUNC_HANGING_STATEMENT))\n this.unexpected()\n node.generator = this.eat(tt.star)\n }\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== tt.name ? null : this.parseIdent()\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION)\n }\n\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n this.enterScope(functionFlags(node.async, node.generator))\n\n if (!(statement & FUNC_STATEMENT))\n node.id = this.type === tt.name ? this.parseIdent() : null\n\n this.parseFunctionParams(node)\n this.parseFunctionBody(node, allowExpressionBody, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n}\n\npp.parseFunctionParams = function(node) {\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function(node, isStatement) {\n this.next()\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n const oldStrict = this.strict\n this.strict = true\n\n this.parseClassId(node, isStatement)\n this.parseClassSuper(node)\n let classBody = this.startNode()\n let hadConstructor = false\n classBody.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n const element = this.parseClassElement(node.superClass !== null)\n if (element) {\n classBody.body.push(element)\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) this.raise(element.start, \"Duplicate constructor in the same class\")\n hadConstructor = true\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\")\n this.strict = oldStrict\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n}\n\npp.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(tt.semi)) return null\n\n let method = this.startNode()\n const tryContextual = (k, noLineBreak = false) => {\n const start = this.start, startLoc = this.startLoc\n if (!this.eatContextual(k)) return false\n if (this.type !== tt.parenL && (!noLineBreak || !this.canInsertSemicolon())) return true\n if (method.key) this.unexpected()\n method.computed = false\n method.key = this.startNodeAt(start, startLoc)\n method.key.name = k\n this.finishNode(method.key, \"Identifier\")\n return false\n }\n\n method.kind = \"method\"\n method.static = tryContextual(\"static\")\n let isGenerator = this.eat(tt.star)\n let isAsync = false\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\"\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\"\n }\n }\n if (!method.key) this.parsePropertyName(method)\n let {key} = method\n let allowsDirectSuper = false\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") this.raise(key.start, \"Constructor can't have get/set modifier\")\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\")\n if (isAsync) this.raise(key.start, \"Constructor can't be an async method\")\n method.kind = \"constructor\"\n allowsDirectSuper = constructorAllowsSuper\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\")\n }\n this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper)\n if (method.kind === \"get\" && method.value.params.length !== 0)\n this.raiseRecoverable(method.value.start, \"getter should have no params\")\n if (method.kind === \"set\" && method.value.params.length !== 1)\n this.raiseRecoverable(method.value.start, \"setter should have exactly one param\")\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\")\n return method\n}\n\npp.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper)\n return this.finishNode(method, \"MethodDefinition\")\n}\n\npp.parseClassId = function(node, isStatement) {\n if (this.type === tt.name) {\n node.id = this.parseIdent()\n if (isStatement === true)\n this.checkLVal(node.id, BIND_LEXICAL, false)\n } else {\n if (isStatement === true)\n this.unexpected()\n node.id = null\n }\n}\n\npp.parseClassSuper = function(node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null\n}\n\n// Parses module export declaration.\n\npp.parseExport = function(node, exports) {\n this.next()\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\")\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n this.semicolon()\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(tt._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart)\n let isAsync\n if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {\n let fNode = this.startNode()\n this.next()\n if (isAsync) this.next()\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === tt._class) {\n let cNode = this.startNode()\n node.declaration = this.parseClass(cNode, \"nullableID\")\n } else {\n node.declaration = this.parseMaybeAssign()\n this.semicolon()\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null)\n if (node.declaration.type === \"VariableDeclaration\")\n this.checkVariableExport(exports, node.declaration.declarations)\n else\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)\n node.specifiers = []\n node.source = null\n } else { // export { x, y as z } [from '...']\n node.declaration = null\n node.specifiers = this.parseExportSpecifiers(exports)\n if (this.eatContextual(\"from\")) {\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n } else {\n for (let spec of node.specifiers) {\n // check for keywords used as local names\n this.checkUnreserved(spec.local)\n // check if export is defined\n this.checkLocalExport(spec.local)\n }\n\n node.source = null\n }\n this.semicolon()\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n}\n\npp.checkExport = function(exports, name, pos) {\n if (!exports) return\n if (has(exports, name))\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\")\n exports[name] = true\n}\n\npp.checkPatternExport = function(exports, pat) {\n let type = pat.type\n if (type === \"Identifier\")\n this.checkExport(exports, pat.name, pat.start)\n else if (type === \"ObjectPattern\")\n for (let prop of pat.properties)\n this.checkPatternExport(exports, prop)\n else if (type === \"ArrayPattern\")\n for (let elt of pat.elements) {\n if (elt) this.checkPatternExport(exports, elt)\n }\n else if (type === \"Property\")\n this.checkPatternExport(exports, pat.value)\n else if (type === \"AssignmentPattern\")\n this.checkPatternExport(exports, pat.left)\n else if (type === \"RestElement\")\n this.checkPatternExport(exports, pat.argument)\n else if (type === \"ParenthesizedExpression\")\n this.checkPatternExport(exports, pat.expression)\n}\n\npp.checkVariableExport = function(exports, decls) {\n if (!exports) return\n for (let decl of decls)\n this.checkPatternExport(exports, decl.id)\n}\n\npp.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n}\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function(exports) {\n let nodes = [], first = true\n // export { x, y as z } [from '...']\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.local = this.parseIdent(true)\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local\n this.checkExport(exports, node.exported.name, node.exported.start)\n nodes.push(this.finishNode(node, \"ExportSpecifier\"))\n }\n return nodes\n}\n\n// Parses import declaration.\n\npp.parseImport = function(node) {\n this.next()\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty\n node.source = this.parseExprAtom()\n } else {\n node.specifiers = this.parseImportSpecifiers()\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n }\n this.semicolon()\n return this.finishNode(node, \"ImportDeclaration\")\n}\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function() {\n let nodes = [], first = true\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n let node = this.startNode()\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"))\n if (!this.eat(tt.comma)) return nodes\n }\n if (this.type === tt.star) {\n let node = this.startNode()\n this.next()\n this.expectContextual(\"as\")\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"))\n return nodes\n }\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.imported = this.parseIdent(true)\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent()\n } else {\n this.checkUnreserved(node.imported)\n node.local = node.imported\n }\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportSpecifier\"))\n }\n return nodes\n}\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp.adaptDirectivePrologue = function(statements) {\n for (let i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1)\n }\n}\npp.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {has} from \"./util\"\nimport {BIND_NONE, BIND_OUTSIDE} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\")\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n for (let prop of node.properties) {\n this.toAssignable(prop, isBinding)\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\")\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") this.raise(node.key.start, \"Object pattern can't contain getter or setter\")\n this.toAssignable(node.value, isBinding)\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n this.toAssignableList(node.elements, isBinding)\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\"\n this.toAssignable(node.argument, isBinding)\n if (node.argument.type === \"AssignmentPattern\")\n this.raise(node.argument.start, \"Rest elements cannot have a default value\")\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\")\n node.type = \"AssignmentPattern\"\n delete node.operator\n this.toAssignable(node.left, isBinding)\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors)\n break\n\n case \"MemberExpression\":\n if (!isBinding) break\n\n default:\n this.raise(node.start, \"Assigning to rvalue\")\n }\n } else if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n return node\n}\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function(exprList, isBinding) {\n let end = exprList.length\n for (let i = 0; i < end; i++) {\n let elt = exprList[i]\n if (elt) this.toAssignable(elt, isBinding)\n }\n if (end) {\n let last = exprList[end - 1]\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n this.unexpected(last.argument.start)\n }\n return exprList\n}\n\n// Parses spread element.\n\npp.parseSpread = function(refDestructuringErrors) {\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n return this.finishNode(node, \"SpreadElement\")\n}\n\npp.parseRestBinding = function() {\n let node = this.startNode()\n this.next()\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== tt.name)\n this.unexpected()\n\n node.argument = this.parseBindingAtom()\n\n return this.finishNode(node, \"RestElement\")\n}\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case tt.bracketL:\n let node = this.startNode()\n this.next()\n node.elements = this.parseBindingList(tt.bracketR, true, true)\n return this.finishNode(node, \"ArrayPattern\")\n\n case tt.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n}\n\npp.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (first) first = false\n else this.expect(tt.comma)\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null)\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === tt.ellipsis) {\n let rest = this.parseRestBinding()\n this.parseBindingListItem(rest)\n elts.push(rest)\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n this.expect(close)\n break\n } else {\n let elem = this.parseMaybeDefault(this.start, this.startLoc)\n this.parseBindingListItem(elem)\n elts.push(elem)\n }\n }\n return elts\n}\n\npp.parseBindingListItem = function(param) {\n return param\n}\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom()\n if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.right = this.parseMaybeAssign()\n return this.finishNode(node, \"AssignmentPattern\")\n}\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp.checkLVal = function(expr, bindingType = BIND_NONE, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\")\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n this.raiseRecoverable(expr.start, \"Argument name clash\")\n checkClashes[expr.name] = true\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) this.declareName(expr.name, bindingType, expr.start)\n break\n\n case \"MemberExpression\":\n if (bindingType) this.raiseRecoverable(expr.start, \"Binding member expression\")\n break\n\n case \"ObjectPattern\":\n for (let prop of expr.properties)\n this.checkLVal(prop, bindingType, checkClashes)\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes)\n break\n\n case \"ArrayPattern\":\n for (let elem of expr.elements) {\n if (elem) this.checkLVal(elem, bindingType, checkClashes)\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes)\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes)\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes)\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\")\n }\n}\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {lineBreak} from \"./whitespace\"\nimport {functionFlags, SCOPE_ARROW, SCOPE_SUPER, SCOPE_DIRECT_SUPER, BIND_OUTSIDE, BIND_VAR} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n return\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n return\n let {key} = prop, name\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n let {kind} = prop\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) refDestructuringErrors.doubleProto = key.start\n // Backwards-compat kludge. Can be removed in version 6.0\n else this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\")\n }\n propHash.proto = true\n }\n return\n }\n name = \"$\" + name\n let other = propHash[name]\n if (other) {\n let redefinition\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set\n } else {\n redefinition = other.init || other[kind]\n }\n if (redefinition)\n this.raiseRecoverable(key.start, \"Redefinition of property\")\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n }\n }\n other[kind] = true\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeAssign(noIn, refDestructuringErrors)\n if (this.type === tt.comma) {\n let node = this.startNodeAt(startPos, startLoc)\n node.expressions = [expr]\n while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors))\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) return this.parseYield(noIn)\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else this.exprAllowed = false\n }\n\n let ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldShorthandAssign = -1\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign\n oldTrailingComma = refDestructuringErrors.trailingComma\n oldShorthandAssign = refDestructuringErrors.shorthandAssign\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1\n } else {\n refDestructuringErrors = new DestructuringErrors\n ownDestructuringErrors = true\n }\n\n let startPos = this.start, startLoc = this.startLoc\n if (this.type === tt.parenL || this.type === tt.name)\n this.potentialArrowAt = this.start\n let left = this.parseMaybeConditional(noIn, refDestructuringErrors)\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)\n if (this.type.isAssign) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.left = this.type === tt.eq ? this.toAssignable(left, false, refDestructuringErrors) : left\n if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)\n refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly\n this.checkLVal(left)\n this.next()\n node.right = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign\n if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma\n if (oldShorthandAssign > -1) refDestructuringErrors.shorthandAssign = oldShorthandAssign\n return left\n}\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprOps(noIn, refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n if (this.eat(tt.question)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.test = expr\n node.consequent = this.parseMaybeAssign()\n this.expect(tt.colon)\n node.alternate = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n}\n\n// Start the precedence parser.\n\npp.parseExprOps = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeUnary(refDestructuringErrors, false)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n let prec = this.type.binop\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n let logical = this.type === tt.logicalOR || this.type === tt.logicalAND\n let op = this.value\n this.next()\n let startPos = this.start, startLoc = this.startLoc\n let right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)\n let node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n}\n\npp.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.operator = op\n node.right = right\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n}\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n let startPos = this.start, startLoc = this.startLoc, expr\n if (this.isContextual(\"await\") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {\n expr = this.parseAwait()\n sawUnary = true\n } else if (this.type.prefix) {\n let node = this.startNode(), update = this.type === tt.incDec\n node.operator = this.value\n node.prefix = true\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n this.checkExpressionErrors(refDestructuringErrors, true)\n if (update) this.checkLVal(node.argument)\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\")\n else sawUnary = true\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\")\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n while (this.type.postfix && !this.canInsertSemicolon()) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.prefix = false\n node.argument = expr\n this.checkLVal(expr)\n this.next()\n expr = this.finishNode(node, \"UpdateExpression\")\n }\n }\n\n if (!sawUnary && this.eat(tt.starstar))\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false)\n else\n return expr\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function(refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprAtom(refDestructuringErrors)\n let skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\"\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr\n let result = this.parseSubscripts(expr, startPos, startLoc)\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1\n if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1\n }\n return result\n}\n\npp.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\"\n while (true) {\n let element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow)\n if (element === base || element.type === \"ArrowFunctionExpression\") return element\n base = element\n }\n}\n\npp.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) {\n let computed = this.eat(tt.bracketL)\n if (computed || this.eat(tt.dot)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.object = base\n node.property = computed ? this.parseExpression() : this.parseIdent(true)\n node.computed = !!computed\n if (computed) this.expect(tt.bracketR)\n base = this.finishNode(node, \"MemberExpression\")\n } else if (!noCalls && this.eat(tt.parenL)) {\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors)\n if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n if (this.awaitIdentPos > 0)\n this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\")\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)\n }\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos\n let node = this.startNodeAt(startPos, startLoc)\n node.callee = base\n node.arguments = exprList\n base = this.finishNode(node, \"CallExpression\")\n } else if (this.type === tt.backQuote) {\n let node = this.startNodeAt(startPos, startLoc)\n node.tag = base\n node.quasi = this.parseTemplate({isTagged: true})\n base = this.finishNode(node, \"TaggedTemplateExpression\")\n }\n return base\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function(refDestructuringErrors) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === tt.slash) this.readRegexp()\n\n let node, canBeArrow = this.potentialArrowAt === this.start\n switch (this.type) {\n case tt._super:\n if (!this.allowSuper)\n this.raise(this.start, \"'super' keyword outside a method\")\n node = this.startNode()\n this.next()\n if (this.type === tt.parenL && !this.allowDirectSuper)\n this.raise(node.start, \"super() call outside constructor of a subclass\")\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== tt.dot && this.type !== tt.bracketL && this.type !== tt.parenL)\n this.unexpected()\n return this.finishNode(node, \"Super\")\n\n case tt._this:\n node = this.startNode()\n this.next()\n return this.finishNode(node, \"ThisExpression\")\n\n case tt.name:\n let startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc\n let id = this.parseIdent(false)\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(tt._function))\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true)\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(tt.arrow))\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === tt.name && !containsEsc) {\n id = this.parseIdent(false)\n if (this.canInsertSemicolon() || !this.eat(tt.arrow))\n this.unexpected()\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case tt.regexp:\n let value = this.value\n node = this.parseLiteral(value.value)\n node.regex = {pattern: value.pattern, flags: value.flags}\n return node\n\n case tt.num: case tt.string:\n return this.parseLiteral(this.value)\n\n case tt._null: case tt._true: case tt._false:\n node = this.startNode()\n node.value = this.type === tt._null ? null : this.type === tt._true\n node.raw = this.type.keyword\n this.next()\n return this.finishNode(node, \"Literal\")\n\n case tt.parenL:\n let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n refDestructuringErrors.parenthesizedAssign = start\n if (refDestructuringErrors.parenthesizedBind < 0)\n refDestructuringErrors.parenthesizedBind = start\n }\n return expr\n\n case tt.bracketL:\n node = this.startNode()\n this.next()\n node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)\n return this.finishNode(node, \"ArrayExpression\")\n\n case tt.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case tt._function:\n node = this.startNode()\n this.next()\n return this.parseFunction(node, 0)\n\n case tt._class:\n return this.parseClass(this.startNode(), false)\n\n case tt._new:\n return this.parseNew()\n\n case tt.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected()\n }\n}\n\npp.parseLiteral = function(value) {\n let node = this.startNode()\n node.value = value\n node.raw = this.input.slice(this.start, this.end)\n this.next()\n return this.finishNode(node, \"Literal\")\n}\n\npp.parseParenExpression = function() {\n this.expect(tt.parenL)\n let val = this.parseExpression()\n this.expect(tt.parenR)\n return val\n}\n\npp.parseParenAndDistinguishExpression = function(canBeArrow) {\n let startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8\n if (this.options.ecmaVersion >= 6) {\n this.next()\n\n let innerStartPos = this.start, innerStartLoc = this.startLoc\n let exprList = [], first = true, lastIsComma = false\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart\n this.yieldPos = 0\n this.awaitPos = 0\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== tt.parenR) {\n first ? first = false : this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(tt.parenR, true)) {\n lastIsComma = true\n break\n } else if (this.type === tt.ellipsis) {\n spreadStart = this.start\n exprList.push(this.parseParenItem(this.parseRestBinding()))\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem))\n }\n }\n let innerEndPos = this.start, innerEndLoc = this.startLoc\n this.expect(tt.parenR)\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)\n if (spreadStart) this.unexpected(spreadStart)\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc)\n val.expressions = exprList\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc)\n } else {\n val = exprList[0]\n }\n } else {\n val = this.parseParenExpression()\n }\n\n if (this.options.preserveParens) {\n let par = this.startNodeAt(startPos, startLoc)\n par.expression = val\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n}\n\npp.parseParenItem = function(item) {\n return item\n}\n\npp.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nconst empty = []\n\npp.parseNew = function() {\n let node = this.startNode()\n let meta = this.parseIdent(true)\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta\n let containsEsc = this.containsEsc\n node.property = this.parseIdent(true)\n if (node.property.name !== \"target\" || containsEsc)\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\")\n if (!this.inNonArrowFunction())\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\")\n return this.finishNode(node, \"MetaProperty\")\n }\n let startPos = this.start, startLoc = this.startLoc\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)\n else node.arguments = empty\n return this.finishNode(node, \"NewExpression\")\n}\n\n// Parse template expression.\n\npp.parseTemplateElement = function({isTagged}) {\n let elem = this.startNode()\n if (this.type === tt.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\")\n }\n elem.value = {\n raw: this.value,\n cooked: null\n }\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n }\n }\n this.next()\n elem.tail = this.type === tt.backQuote\n return this.finishNode(elem, \"TemplateElement\")\n}\n\npp.parseTemplate = function({isTagged = false} = {}) {\n let node = this.startNode()\n this.next()\n node.expressions = []\n let curElt = this.parseTemplateElement({isTagged})\n node.quasis = [curElt]\n while (!curElt.tail) {\n if (this.type === tt.eof) this.raise(this.pos, \"Unterminated template literal\")\n this.expect(tt.dollarBraceL)\n node.expressions.push(this.parseExpression())\n this.expect(tt.braceR)\n node.quasis.push(curElt = this.parseTemplateElement({isTagged}))\n }\n this.next()\n return this.finishNode(node, \"TemplateLiteral\")\n}\n\npp.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === tt.name || this.type === tt.num || this.type === tt.string || this.type === tt.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === tt.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n const prop = this.parseProperty(isPattern, refDestructuringErrors)\n if (!isPattern) this.checkPropClash(prop, propHash, refDestructuringErrors)\n node.properties.push(prop)\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n}\n\npp.parseProperty = function(isPattern, refDestructuringErrors) {\n let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this.options.ecmaVersion >= 9 && this.eat(tt.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false)\n if (this.type === tt.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\")\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === tt.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === tt.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this.start\n startLoc = this.startLoc\n }\n if (!isPattern)\n isGenerator = this.eat(tt.star)\n }\n let containsEsc = this.containsEsc\n this.parsePropertyName(prop)\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n this.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc)\n return this.finishNode(prop, \"Property\")\n}\n\npp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === tt.colon)\n this.unexpected()\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)\n prop.kind = \"init\"\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected()\n prop.kind = \"init\"\n prop.method = true\n prop.value = this.parseMethod(isGenerator, isAsync)\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== tt.comma && this.type !== tt.braceR)) {\n if (isGenerator || isAsync) this.unexpected()\n prop.kind = prop.key.name\n this.parsePropertyName(prop)\n prop.value = this.parseMethod(false)\n let paramCount = prop.kind === \"get\" ? 0 : 1\n if (prop.value.params.length !== paramCount) {\n let start = prop.value.start\n if (prop.kind === \"get\")\n this.raiseRecoverable(start, \"getter should have no params\")\n else\n this.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\")\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) this.unexpected()\n this.checkUnreserved(prop.key)\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n this.awaitIdentPos = startPos\n prop.kind = \"init\"\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else if (this.type === tt.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n refDestructuringErrors.shorthandAssign = this.start\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else {\n prop.value = prop.key\n }\n prop.shorthand = true\n } else this.unexpected()\n}\n\npp.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true\n prop.key = this.parseMaybeAssign()\n this.expect(tt.bracketR)\n return prop.key\n } else {\n prop.computed = false\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)\n}\n\n// Initialize empty function node.\n\npp.initFunction = function(node) {\n node.id = null\n if (this.options.ecmaVersion >= 6) node.generator = node.expression = false\n if (this.options.ecmaVersion >= 8) node.async = false\n}\n\n// Parse object or class method.\n\npp.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n let node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6)\n node.generator = isGenerator\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0))\n\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n this.parseFunctionBody(node, false, true)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, \"FunctionExpression\")\n}\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function(node, params, isAsync) {\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW)\n this.initFunction(node)\n if (this.options.ecmaVersion >= 8) node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n\n node.params = this.toAssignableList(params, true)\n this.parseFunctionBody(node, true, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, \"ArrowFunctionExpression\")\n}\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function(node, isArrowFunction, isMethod) {\n let isExpression = isArrowFunction && this.type !== tt.braceL\n let oldStrict = this.strict, useStrict = false\n\n if (isExpression) {\n node.body = this.parseMaybeAssign()\n node.expression = true\n this.checkParams(node, false)\n } else {\n let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end)\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\")\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n let oldLabels = this.labels\n this.labels = []\n if (useStrict) this.strict = true\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params))\n node.body = this.parseBlock(false)\n node.expression = false\n this.adaptDirectivePrologue(node.body.body)\n this.labels = oldLabels\n }\n this.exitScope()\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) this.checkLVal(node.id, BIND_OUTSIDE)\n this.strict = oldStrict\n}\n\npp.isSimpleParamList = function(params) {\n for (let param of params)\n if (param.type !== \"Identifier\") return false\n return true\n}\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp.checkParams = function(node, allowDuplicates) {\n let nameHash = {}\n for (let param of node.params)\n this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash)\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (!first) {\n this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(close)) break\n } else first = false\n\n let elt\n if (allowEmpty && this.type === tt.comma)\n elt = null\n else if (this.type === tt.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors)\n if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0)\n refDestructuringErrors.trailingComma = this.start\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors)\n }\n elts.push(elt)\n }\n return elts\n}\n\npp.checkUnreserved = function({start, end, name}) {\n if (this.inGenerator && name === \"yield\")\n this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\")\n if (this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\")\n if (this.keywords.test(name))\n this.raise(start, `Unexpected keyword '${name}'`)\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) return\n const re = this.strict ? this.reservedWordsStrict : this.reservedWords\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\")\n this.raiseRecoverable(start, `The keyword '${name}' is reserved`)\n }\n}\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function(liberal, isBinding) {\n let node = this.startNode()\n if (liberal && this.options.allowReserved === \"never\") liberal = false\n if (this.type === tt.name) {\n node.name = this.value\n } else if (this.type.keyword) {\n node.name = this.type.keyword\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop()\n }\n } else {\n this.unexpected()\n }\n this.next()\n this.finishNode(node, \"Identifier\")\n if (!liberal) {\n this.checkUnreserved(node)\n if (node.name === \"await\" && !this.awaitIdentPos)\n this.awaitIdentPos = node.start\n }\n return node\n}\n\n// Parses yield expression inside generator.\n\npp.parseYield = function(noIn) {\n if (!this.yieldPos) this.yieldPos = this.start\n\n let node = this.startNode()\n this.next()\n if (this.type === tt.semi || this.canInsertSemicolon() || (this.type !== tt.star && !this.type.startsExpr)) {\n node.delegate = false\n node.argument = null\n } else {\n node.delegate = this.eat(tt.star)\n node.argument = this.parseMaybeAssign(noIn)\n }\n return this.finishNode(node, \"YieldExpression\")\n}\n\npp.parseAwait = function() {\n if (!this.awaitPos) this.awaitPos = this.start\n\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n return this.finishNode(node, \"AwaitExpression\")\n}\n","import {Parser} from \"./state\"\nimport {Position, getLineInfo} from \"./locutil\"\n\nconst pp = Parser.prototype\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function(pos, message) {\n let loc = getLineInfo(this.input, pos)\n message += \" (\" + loc.line + \":\" + loc.column + \")\"\n let err = new SyntaxError(message)\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos\n throw err\n}\n\npp.raiseRecoverable = pp.raise\n\npp.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n}\n","import {Parser} from \"./state\"\nimport {SCOPE_VAR, SCOPE_FUNCTION, SCOPE_TOP, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, BIND_LEXICAL, BIND_SIMPLE_CATCH, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\nclass Scope {\n constructor(flags) {\n this.flags = flags\n // A list of var-declared names in the current lexical scope\n this.var = []\n // A list of lexically-declared names in the current lexical scope\n this.lexical = []\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = []\n }\n}\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags))\n}\n\npp.exitScope = function() {\n this.scopeStack.pop()\n}\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n}\n\npp.declareName = function(name, bindingType, pos) {\n let redeclared = false\n if (bindingType === BIND_LEXICAL) {\n const scope = this.currentScope()\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.lexical.push(name)\n if (this.inModule && (scope.flags & SCOPE_TOP))\n delete this.undefinedExports[name]\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n const scope = this.currentScope()\n scope.lexical.push(name)\n } else if (bindingType === BIND_FUNCTION) {\n const scope = this.currentScope()\n if (this.treatFunctionsAsVar)\n redeclared = scope.lexical.indexOf(name) > -1\n else\n redeclared = scope.lexical.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.functions.push(name)\n } else {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n const scope = this.scopeStack[i]\n if (scope.lexical.indexOf(name) > -1 && !((scope.flags & SCOPE_SIMPLE_CATCH) && scope.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1) {\n redeclared = true\n break\n }\n scope.var.push(name)\n if (this.inModule && (scope.flags & SCOPE_TOP))\n delete this.undefinedExports[name]\n if (scope.flags & SCOPE_VAR) break\n }\n }\n if (redeclared) this.raiseRecoverable(pos, `Identifier '${name}' has already been declared`)\n}\n\npp.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id\n }\n}\n\npp.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n}\n\npp.currentVarScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR) return scope\n }\n}\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp.currentThisScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) return scope\n }\n}\n","import {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\n\nexport class Node {\n constructor(parser, pos, loc) {\n this.type = \"\"\n this.start = pos\n this.end = 0\n if (parser.options.locations)\n this.loc = new SourceLocation(parser, loc)\n if (parser.options.directSourceFile)\n this.sourceFile = parser.options.directSourceFile\n if (parser.options.ranges)\n this.range = [pos, 0]\n }\n}\n\n// Start an AST node, attaching a start offset.\n\nconst pp = Parser.prototype\n\npp.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n}\n\npp.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n}\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type\n node.end = pos\n if (this.options.locations)\n node.loc.end = loc\n if (this.options.ranges)\n node.range[1] = pos\n return node\n}\n\npp.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n}\n\n// Finish node at given position\n\npp.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n}\n","// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport {Parser} from \"./state\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\n\nexport class TokContext {\n constructor(token, isExpr, preserveSpace, override, generator) {\n this.token = token\n this.isExpr = !!isExpr\n this.preserveSpace = !!preserveSpace\n this.override = override\n this.generator = !!generator\n }\n}\n\nexport const types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, p => p.tryReadTemplateToken()),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n}\n\nconst pp = Parser.prototype\n\npp.initialContext = function() {\n return [types.b_stat]\n}\n\npp.braceIsBlock = function(prevType) {\n let parent = this.curContext()\n if (parent === types.f_expr || parent === types.f_stat)\n return true\n if (prevType === tt.colon && (parent === types.b_stat || parent === types.b_expr))\n return !parent.isExpr\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === tt._return || prevType === tt.name && this.exprAllowed)\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType === tt.arrow)\n return true\n if (prevType === tt.braceL)\n return parent === types.b_stat\n if (prevType === tt._var || prevType === tt._const || prevType === tt.name)\n return false\n return !this.exprAllowed\n}\n\npp.inGeneratorContext = function() {\n for (let i = this.context.length - 1; i >= 1; i--) {\n let context = this.context[i]\n if (context.token === \"function\")\n return context.generator\n }\n return false\n}\n\npp.updateContext = function(prevType) {\n let update, type = this.type\n if (type.keyword && prevType === tt.dot)\n this.exprAllowed = false\n else if (update = type.updateContext)\n update.call(this, prevType)\n else\n this.exprAllowed = type.beforeExpr\n}\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true\n return\n }\n let out = this.context.pop()\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop()\n }\n this.exprAllowed = !out.isExpr\n}\n\ntt.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)\n this.exprAllowed = true\n}\n\ntt.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl)\n this.exprAllowed = true\n}\n\ntt.parenL.updateContext = function(prevType) {\n let statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while\n this.context.push(statementParens ? types.p_stat : types.p_expr)\n this.exprAllowed = true\n}\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n}\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&\n !(prevType === tt._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))\n this.context.push(types.f_expr)\n else\n this.context.push(types.f_stat)\n this.exprAllowed = false\n}\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n this.context.pop()\n else\n this.context.push(types.q_tmpl)\n this.exprAllowed = false\n}\n\ntt.star.updateContext = function(prevType) {\n if (prevType === tt._function) {\n let index = this.context.length - 1\n if (this.context[index] === types.f_expr)\n this.context[index] = types.f_expr_gen\n else\n this.context[index] = types.f_gen\n }\n this.exprAllowed = true\n}\n\ntt.name.updateContext = function(prevType) {\n let allowed = false\n if (this.options.ecmaVersion >= 6 && prevType !== tt.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n allowed = true\n }\n this.exprAllowed = allowed\n}\n","import {wordsRegexp} from \"./util.js\"\n\n// This file contains Unicode properties extracted from the ECMAScript\n// specification. The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nconst ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\"\nconst unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma9BinaryProperties + \" Extended_Pictographic\"\n}\n\n// #table-unicode-general-category-values\nconst unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\"\n\n// #table-unicode-script-values\nconst ecma9ScriptValues = \"Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\"\nconst unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\"\n}\n\nconst data = {}\nfunction buildUnicodeData(ecmaVersion) {\n let d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n }\n d.nonBinary.Script_Extensions = d.nonBinary.Script\n\n d.nonBinary.gc = d.nonBinary.General_Category\n d.nonBinary.sc = d.nonBinary.Script\n d.nonBinary.scx = d.nonBinary.Script_Extensions\n}\nbuildUnicodeData(9)\nbuildUnicodeData(10)\n\nexport default data\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier.js\"\nimport {Parser} from \"./state.js\"\nimport UNICODE_PROPERTY_VALUES from \"./unicode-property-data.js\"\nimport {has} from \"./util.js\"\n\nconst pp = Parser.prototype\n\nexport class RegExpValidationState {\n constructor(parser) {\n this.parser = parser\n this.validFlags = `gim${parser.options.ecmaVersion >= 6 ? \"uy\" : \"\"}${parser.options.ecmaVersion >= 9 ? \"s\" : \"\"}`\n this.unicodeProperties = UNICODE_PROPERTY_VALUES[parser.options.ecmaVersion >= 10 ? 10 : parser.options.ecmaVersion]\n this.source = \"\"\n this.flags = \"\"\n this.start = 0\n this.switchU = false\n this.switchN = false\n this.pos = 0\n this.lastIntValue = 0\n this.lastStringValue = \"\"\n this.lastAssertionIsQuantifiable = false\n this.numCapturingParens = 0\n this.maxBackReference = 0\n this.groupNames = []\n this.backReferenceNames = []\n }\n\n reset(start, pattern, flags) {\n const unicode = flags.indexOf(\"u\") !== -1\n this.start = start | 0\n this.source = pattern + \"\"\n this.flags = flags\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9\n }\n\n raise(message) {\n this.parser.raiseRecoverable(this.start, `Invalid regular expression: /${this.source}/: ${message}`)\n }\n\n // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n at(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return -1\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n }\n\n nextIndex(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return l\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n }\n\n current() {\n return this.at(this.pos)\n }\n\n lookahead() {\n return this.at(this.nextIndex(this.pos))\n }\n\n advance() {\n this.pos = this.nextIndex(this.pos)\n }\n\n eat(ch) {\n if (this.current() === ch) {\n this.advance()\n return true\n }\n return false\n }\n}\n\nfunction codePointToString(ch) {\n if (ch <= 0xFFFF) return String.fromCharCode(ch)\n ch -= 0x10000\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpFlags = function(state) {\n const validFlags = state.validFlags\n const flags = state.flags\n\n for (let i = 0; i < flags.length; i++) {\n const flag = flags.charAt(i)\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\")\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\")\n }\n }\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpPattern = function(state) {\n this.regexp_pattern(state)\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true\n this.regexp_pattern(state)\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp.regexp_pattern = function(state) {\n state.pos = 0\n state.lastIntValue = 0\n state.lastStringValue = \"\"\n state.lastAssertionIsQuantifiable = false\n state.numCapturingParens = 0\n state.maxBackReference = 0\n state.groupNames.length = 0\n state.backReferenceNames.length = 0\n\n this.regexp_disjunction(state)\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\")\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\")\n }\n for (const name of state.backReferenceNames) {\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\")\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp.regexp_disjunction = function(state) {\n this.regexp_alternative(state)\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state)\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n ;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\")\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state)\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp.regexp_eatAssertion = function(state) {\n const start = state.pos\n state.lastAssertionIsQuantifiable = false\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n let lookbehind = false\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */)\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state)\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\")\n }\n state.lastAssertionIsQuantifiable = !lookbehind\n return true\n }\n }\n\n state.pos = start\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp.regexp_eatQuantifier = function(state, noError = false) {\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n}\npp.regexp_eatBracedQuantifier = function(state, noError) {\n const start = state.pos\n if (state.eat(0x7B /* { */)) {\n let min = 0, max = -1\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\")\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n}\npp.regexp_eatReverseSolidusAtomEscape = function(state) {\n const start = state.pos\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatUncapturingGroup = function(state) {\n const start = state.pos\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\")\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state)\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\")\n }\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1\n return true\n }\n state.raise(\"Unterminated group\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp.regexp_eatSyntaxCharacter = function(state) {\n const ch = state.current()\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n return false\n}\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp.regexp_eatPatternCharacters = function(state) {\n const start = state.pos\n let ch = 0\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance()\n }\n return state.pos !== start\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp.regexp_eatExtendedPatternCharacter = function(state) {\n const ch = state.current()\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance()\n return true\n }\n return false\n}\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\")\n }\n state.groupNames.push(state.lastStringValue)\n return\n }\n state.raise(\"Invalid group\")\n }\n}\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\"\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\")\n }\n return false\n}\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\"\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n }\n return true\n }\n return false\n}\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp.regexp_eatRegExpIdentifierStart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// <ZWNJ>\n// <ZWJ>\npp.regexp_eatRegExpIdentifierPart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\")\n }\n state.raise(\"Invalid escape\")\n }\n return false\n}\npp.regexp_eatBackReference = function(state) {\n const start = state.pos\n if (this.regexp_eatDecimalEscape(state)) {\n const n = state.lastIntValue\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue)\n return true\n }\n state.raise(\"Invalid named reference\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n}\npp.regexp_eatCControlLetter = function(state) {\n const start = state.pos\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp.regexp_eatControlEscape = function(state) {\n const ch = state.current()\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09 /* \\t */\n state.advance()\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A /* \\n */\n state.advance()\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B /* \\v */\n state.advance()\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C /* \\f */\n state.advance()\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D /* \\r */\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp.regexp_eatControlLetter = function(state) {\n const ch = state.current()\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp.regexp_eatRegExpUnicodeEscapeSequence = function(state) {\n const start = state.pos\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n const lead = state.lastIntValue\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n const leadSurrogateEnd = state.pos\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n const trail = state.lastIntValue\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000\n return true\n }\n }\n state.pos = leadSurrogateEnd\n state.lastIntValue = lead\n }\n return true\n }\n if (\n state.switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\")\n }\n state.pos = start\n }\n\n return false\n}\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F /* / */\n return true\n }\n return false\n }\n\n const ch = state.current()\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0\n let ch = state.current()\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp.regexp_eatCharacterClassEscape = function(state) {\n const ch = state.current()\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1\n state.advance()\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1\n state.advance()\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\")\n }\n\n return false\n}\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp.regexp_eatUnicodePropertyValueExpression = function(state) {\n const start = state.pos\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n const name = state.lastStringValue\n if (this.regexp_eatUnicodePropertyValue(state)) {\n const value = state.lastStringValue\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value)\n return true\n }\n }\n state.pos = start\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n const nameOrValue = state.lastStringValue\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n return true\n }\n return false\n}\npp.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!has(state.unicodeProperties.nonBinary, name))\n state.raise(\"Invalid property name\")\n if (!state.unicodeProperties.nonBinary[name].test(value))\n state.raise(\"Invalid property value\")\n}\npp.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (!state.unicodeProperties.binary.test(nameOrValue))\n state.raise(\"Invalid property name\")\n}\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp.regexp_eatUnicodePropertyName = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatUnicodePropertyValue = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */)\n this.regexp_classRanges(state)\n if (state.eat(0x5D /* [ */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp.regexp_classRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n const left = state.lastIntValue\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n const right = state.lastIntValue\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\")\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\")\n }\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp.regexp_eatClassAtom = function(state) {\n const start = state.pos\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n const ch = state.current()\n if (ch === 0x63 /* c */ || isOctalDigit(ch)) {\n state.raise(\"Invalid class escape\")\n }\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n\n const ch = state.current()\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp.regexp_eatClassEscape = function(state) {\n const start = state.pos\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08 /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp.regexp_eatClassControlLetter = function(state) {\n const ch = state.current()\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatHexEscapeSequence = function(state) {\n const start = state.pos\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp.regexp_eatDecimalDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp.regexp_eatHexDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n const n1 = state.lastIntValue\n if (this.regexp_eatOctalDigit(state)) {\n const n2 = state.lastIntValue\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue\n } else {\n state.lastIntValue = n1 * 8 + n2\n }\n } else {\n state.lastIntValue = n1\n }\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp.regexp_eatOctalDigit = function(state) {\n const ch = state.current()\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30 /* 0 */\n state.advance()\n return true\n }\n state.lastIntValue = 0\n return false\n}\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatFixedHexDigits = function(state, length) {\n const start = state.pos\n state.lastIntValue = 0\n for (let i = 0; i < length; ++i) {\n const ch = state.current()\n if (!isHexDigit(ch)) {\n state.pos = start\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return true\n}\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier\"\nimport {types as tt, keywords as keywordTypes} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\nimport {RegExpValidationState} from \"./regexp\"\nimport {lineBreak, lineBreakG, isNewLine, nonASCIIwhitespace} from \"./whitespace\"\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(p) {\n this.type = p.type\n this.value = p.value\n this.start = p.start\n this.end = p.end\n if (p.options.locations)\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc)\n if (p.options.ranges)\n this.range = [p.start, p.end]\n }\n}\n\n// ## Tokenizer\n\nconst pp = Parser.prototype\n\n// Move to the next token\n\npp.next = function() {\n if (this.options.onToken)\n this.options.onToken(new Token(this))\n\n this.lastTokEnd = this.end\n this.lastTokStart = this.start\n this.lastTokEndLoc = this.endLoc\n this.lastTokStartLoc = this.startLoc\n this.nextToken()\n}\n\npp.getToken = function() {\n this.next()\n return new Token(this)\n}\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n pp[Symbol.iterator] = function() {\n return {\n next: () => {\n let token = this.getToken()\n return {\n done: token.type === tt.eof,\n value: token\n }\n }\n }\n }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.curContext = function() {\n return this.context[this.context.length - 1]\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n let curContext = this.curContext()\n if (!curContext || !curContext.preserveSpace) this.skipSpace()\n\n this.start = this.pos\n if (this.options.locations) this.startLoc = this.curPosition()\n if (this.pos >= this.input.length) return this.finishToken(tt.eof)\n\n if (curContext.override) return curContext.override(this)\n else this.readToken(this.fullCharCodeAtPos())\n}\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n return this.readWord()\n\n return this.getTokenFromCode(code)\n}\n\npp.fullCharCodeAtPos = function() {\n let code = this.input.charCodeAt(this.pos)\n if (code <= 0xd7ff || code >= 0xe000) return code\n let next = this.input.charCodeAt(this.pos + 1)\n return (code << 10) + next - 0x35fdc00\n}\n\npp.skipBlockComment = function() {\n let startLoc = this.options.onComment && this.curPosition()\n let start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2)\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\")\n this.pos = end + 2\n if (this.options.locations) {\n lineBreakG.lastIndex = start\n let match\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine\n this.lineStart = match.index + match[0].length\n }\n }\n if (this.options.onComment)\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition())\n}\n\npp.skipLineComment = function(startSkip) {\n let start = this.pos\n let startLoc = this.options.onComment && this.curPosition()\n let ch = this.input.charCodeAt(this.pos += startSkip)\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos)\n }\n if (this.options.onComment)\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition())\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n let ch = this.input.charCodeAt(this.pos)\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos\n }\n case 10: case 8232: case 8233:\n ++this.pos\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment()\n break\n case 47:\n this.skipLineComment(2)\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos\n } else {\n break loop\n }\n }\n }\n}\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos\n if (this.options.locations) this.endLoc = this.curPosition()\n let prevType = this.type\n this.type = type\n this.value = val\n\n this.updateContext(prevType)\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n let next = this.input.charCodeAt(this.pos + 1)\n if (next >= 48 && next <= 57) return this.readNumber(true)\n let next2 = this.input.charCodeAt(this.pos + 2)\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3\n return this.finishToken(tt.ellipsis)\n } else {\n ++this.pos\n return this.finishToken(tt.dot)\n }\n}\n\npp.readToken_slash = function() { // '/'\n let next = this.input.charCodeAt(this.pos + 1)\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.slash, 1)\n}\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n let tokentype = code === 42 ? tt.star : tt.modulo\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size\n tokentype = tt.starstar\n next = this.input.charCodeAt(this.pos + 2)\n }\n\n if (next === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tokentype, size)\n}\n\npp.readToken_pipe_amp = function(code) { // '|&'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)\n}\n\npp.readToken_caret = function() { // '^'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.bitwiseXOR, 1)\n}\n\npp.readToken_plus_min = function(code) { // '+-'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4)\n this.skipSpace()\n return this.nextToken()\n }\n if (next === 61) size = 2\n return this.finishOp(tt.relational, size)\n}\n\npp.readToken_eq_excl = function(code) { // '=!'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2\n return this.finishToken(tt.arrow)\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)\n}\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(tt.parenL)\n case 41: ++this.pos; return this.finishToken(tt.parenR)\n case 59: ++this.pos; return this.finishToken(tt.semi)\n case 44: ++this.pos; return this.finishToken(tt.comma)\n case 91: ++this.pos; return this.finishToken(tt.bracketL)\n case 93: ++this.pos; return this.finishToken(tt.bracketR)\n case 123: ++this.pos; return this.finishToken(tt.braceL)\n case 125: ++this.pos; return this.finishToken(tt.braceR)\n case 58: ++this.pos; return this.finishToken(tt.colon)\n case 63: ++this.pos; return this.finishToken(tt.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) break\n ++this.pos\n return this.finishToken(tt.backQuote)\n\n case 48: // '0'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(tt.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\")\n}\n\npp.finishOp = function(type, size) {\n let str = this.input.slice(this.pos, this.pos + size)\n this.pos += size\n return this.finishToken(type, str)\n}\n\npp.readRegexp = function() {\n let escaped, inClass, start = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\")\n let ch = this.input.charAt(this.pos)\n if (lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\")\n if (!escaped) {\n if (ch === \"[\") inClass = true\n else if (ch === \"]\" && inClass) inClass = false\n else if (ch === \"/\" && !inClass) break\n escaped = ch === \"\\\\\"\n } else escaped = false\n ++this.pos\n }\n let pattern = this.input.slice(start, this.pos)\n ++this.pos\n let flagsStart = this.pos\n let flags = this.readWord1()\n if (this.containsEsc) this.unexpected(flagsStart)\n\n // Validate pattern\n const state = this.regexpState || (this.regexpState = new RegExpValidationState(this))\n state.reset(start, pattern, flags)\n this.validateRegExpFlags(state)\n this.validateRegExpPattern(state)\n\n // Create Literal#value property value.\n let value = null\n try {\n value = new RegExp(pattern, flags)\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(tt.regexp, {pattern, flags, value})\n}\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len) {\n let start = this.pos, total = 0\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n let code = this.input.charCodeAt(this.pos), val\n if (code >= 97) val = code - 97 + 10 // a\n else if (code >= 65) val = code - 65 + 10 // A\n else if (code >= 48 && code <= 57) val = code - 48 // 0-9\n else val = Infinity\n if (val >= radix) break\n ++this.pos\n total = total * radix + val\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null\n\n return total\n}\n\npp.readRadixNumber = function(radix) {\n this.pos += 2 // 0x\n let val = this.readInt(radix)\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix)\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n return this.finishToken(tt.num, val)\n}\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n let start = this.pos\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\")\n let octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48\n if (octal && this.strict) this.raise(start, \"Invalid number\")\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) octal = false\n let next = this.input.charCodeAt(this.pos)\n if (next === 46 && !octal) { // '.'\n ++this.pos\n this.readInt(10)\n next = this.input.charCodeAt(this.pos)\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos)\n if (next === 43 || next === 45) ++this.pos // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\")\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n\n let str = this.input.slice(start, this.pos)\n let val = octal ? parseInt(str, 8) : parseFloat(str)\n return this.finishToken(tt.num, val)\n}\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n let ch = this.input.charCodeAt(this.pos), code\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) this.unexpected()\n let codePos = ++this.pos\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos)\n ++this.pos\n if (code > 0x10FFFF) this.invalidStringToken(codePos, \"Code point out of bounds\")\n } else {\n code = this.readHexChar(4)\n }\n return code\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code)\n code -= 0x10000\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp.readString = function(quote) {\n let out = \"\", chunkStart = ++this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === quote) break\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(false)\n chunkStart = this.pos\n } else {\n if (isNewLine(ch, this.options.ecmaVersion >= 10)) this.raise(this.start, \"Unterminated string constant\")\n ++this.pos\n }\n }\n out += this.input.slice(chunkStart, this.pos++)\n return this.finishToken(tt.string, out)\n}\n\n// Reads template string tokens.\n\nconst INVALID_TEMPLATE_ESCAPE_ERROR = {}\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true\n try {\n this.readTmplToken()\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken()\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false\n}\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message)\n }\n}\n\npp.readTmplToken = function() {\n let out = \"\", chunkStart = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === tt.template || this.type === tt.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2\n return this.finishToken(tt.dollarBraceL)\n } else {\n ++this.pos\n return this.finishToken(tt.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos)\n return this.finishToken(tt.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(true)\n chunkStart = this.pos\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos)\n ++this.pos\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos\n case 10:\n out += \"\\n\"\n break\n default:\n out += String.fromCharCode(ch)\n break\n }\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n chunkStart = this.pos\n } else {\n ++this.pos\n }\n }\n}\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\")\n}\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n let ch = this.input.charCodeAt(++this.pos)\n ++this.pos\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n let octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]\n let octal = parseInt(octalStr, 8)\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1)\n octal = parseInt(octalStr, 8)\n }\n this.pos += octalStr.length - 1\n ch = this.input.charCodeAt(this.pos)\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n )\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n}\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n let codePos = this.pos\n let n = this.readInt(16, len)\n if (n === null) this.invalidStringToken(codePos, \"Bad character escape sequence\")\n return n\n}\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false\n let word = \"\", first = true, chunkStart = this.pos\n let astral = this.options.ecmaVersion >= 6\n while (this.pos < this.input.length) {\n let ch = this.fullCharCodeAtPos()\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true\n word += this.input.slice(chunkStart, this.pos)\n let escStart = this.pos\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\")\n ++this.pos\n let esc = this.readCodePoint()\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n this.invalidStringToken(escStart, \"Invalid Unicode escape\")\n word += codePointToString(esc)\n chunkStart = this.pos\n } else {\n break\n }\n first = false\n }\n return word + this.input.slice(chunkStart, this.pos)\n}\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n let word = this.readWord1()\n let type = tt.name\n if (this.keywords.test(word)) {\n if (this.containsEsc) this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word)\n type = keywordTypes[word]\n }\n return this.finishToken(type, word)\n}\n","// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\nimport {Parser} from \"./state\"\nimport \"./parseutil\"\nimport \"./statement\"\nimport \"./lval\"\nimport \"./expression\"\nimport \"./location\"\nimport \"./scope\"\n\nexport {Parser} from \"./state\"\nexport {defaultOptions} from \"./options\"\nexport {Position, SourceLocation, getLineInfo} from \"./locutil\"\nexport {Node} from \"./node\"\nexport {TokenType, types as tokTypes, keywords as keywordTypes} from \"./tokentype\"\nexport {TokContext, types as tokContexts} from \"./tokencontext\"\nexport {isIdentifierChar, isIdentifierStart} from \"./identifier\"\nexport {Token} from \"./tokenize\"\nexport {isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace} from \"./whitespace\"\n\nexport const version = \"6.1.0\"\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nexport function parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nexport function parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nexport function tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n"],"names":["const","let","keywords","tt","this","pp","init","label","node","empty","scope","types","UNICODE_PROPERTY_VALUES","codePointToString","ch","keywordTypes"],"mappings":";;;;;;AAAA;;AAEA,AAAOA,IAAM,aAAa,GAAG;EAC3B,CAAC,EAAE,qNAAqN;EACxN,CAAC,EAAE,8CAA8C;EACjD,CAAC,EAAE,MAAM;EACT,MAAM,EAAE,wEAAwE;EAChF,UAAU,EAAE,gBAAgB;EAC7B;;;;AAIDA,IAAM,oBAAoB,GAAG,8KAA6K;;AAE1M,AAAOA,IAAM,QAAQ,GAAG;EACtB,CAAC,EAAE,oBAAoB;EACvB,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;EACrE;;AAED,AAAOA,IAAM,yBAAyB,GAAG,kBAAiB;;;;;;;;;;AAU1DC,IAAI,4BAA4B,GAAG,4tIAA2tI;AAC9vIA,IAAI,uBAAuB,GAAG,sjFAAqjF;;AAEnlFD,IAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,EAAC;AACpFA,IAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,EAAC;;AAEzG,4BAA4B,GAAG,uBAAuB,GAAG,KAAI;;;;;;;;;AAS7DA,IAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC;;;AAGvqCA,IAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,C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"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs
index 40215b30b5..0f67d79cd8 100644
--- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs
+++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs
@@ -248,7 +248,7 @@ function isNewLine(code, ecma2019String) {
return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))
}
-var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
+var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/;
var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
@@ -266,6 +266,10 @@ var isArray = Array.isArray || (function (obj) { return (
toString.call(obj) === "[object Array]"
); });
+function wordsRegexp(words) {
+ return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")
+}
+
// These are used when `options.locations` is on, for the
// `startLoc` and `endLoc` properties.
@@ -454,24 +458,20 @@ var BIND_FUNCTION = 3;
var BIND_SIMPLE_CATCH = 4;
var BIND_OUTSIDE = 5; // Special case for function names as bound inside the function
-function keywordRegexp(words) {
- return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$")
-}
-
var Parser = function Parser(options, input, startPos) {
this.options = options = getOptions(options);
this.sourceFile = options.sourceFile;
- this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);
+ this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]);
var reserved = "";
if (!options.allowReserved) {
for (var v = options.ecmaVersion;; v--)
{ if (reserved = reservedWords[v]) { break } }
if (options.sourceType === "module") { reserved += " await"; }
}
- this.reservedWords = keywordRegexp(reserved);
+ this.reservedWords = wordsRegexp(reserved);
var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict;
- this.reservedWordsStrict = keywordRegexp(reservedStrict);
- this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + reservedWords.strictBind);
+ this.reservedWordsStrict = wordsRegexp(reservedStrict);
+ this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind);
this.input = String(input);
// Used to signal to callers of `readWord1` whether the word
@@ -520,9 +520,11 @@ var Parser = function Parser(options, input, startPos) {
this.potentialArrowAt = -1;
// Positions to delayed-check that yield/await does not exist in default parameters.
- this.yieldPos = this.awaitPos = 0;
+ this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;
// Labels in scope.
this.labels = [];
+ // Thus-far undefined exports.
+ this.undefinedExports = {};
// If enabled, skip leading hashbang line.
if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
@@ -599,7 +601,7 @@ pp.strictDirective = function(start) {
// Skip semicolon, if any.
skipWhiteSpace.lastIndex = start;
start += skipWhiteSpace.exec(this$1.input)[0].length;
- if (this$1.input[start] === ';')
+ if (this$1.input[start] === ";")
{ start++; }
}
};
@@ -741,6 +743,13 @@ pp$1.parseTopLevel = function(node) {
var stmt = this$1.parseStatement(null, true, exports);
node.body.push(stmt);
}
+ if (this.inModule)
+ { for (var i = 0, list = Object.keys(this$1.undefinedExports); i < list.length; i += 1)
+ {
+ var name = list[i];
+
+ this$1.raiseRecoverable(this$1.undefinedExports[name].start, ("Export '" + name + "' is not defined"));
+ } }
this.adaptDirectivePrologue(node.body);
this.next();
if (this.options.ecmaVersion >= 6) {
@@ -1232,8 +1241,9 @@ var FUNC_HANGING_STATEMENT = 2;
var FUNC_NULLABLE_ID = 4;
// Parse a function declaration or literal (depending on the
-// `isStatement` parameter).
+// `statement & FUNC_STATEMENT`).
+// Remove `allowExpressionBody` for 7.0.0, as it is only called with false
pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) {
this.initFunction(node);
if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {
@@ -1254,19 +1264,21 @@ pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) {
{ this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }
}
- var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
this.enterScope(functionFlags(node.async, node.generator));
if (!(statement & FUNC_STATEMENT))
{ node.id = this.type === types.name ? this.parseIdent() : null; }
this.parseFunctionParams(node);
- this.parseFunctionBody(node, allowExpressionBody);
+ this.parseFunctionBody(node, allowExpressionBody, false);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression")
};
@@ -1409,7 +1421,7 @@ pp$1.parseExport = function(node, exports) {
var fNode = this.startNode();
this.next();
if (isAsync) { this.next(); }
- node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync, true);
+ node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync);
} else if (this.type === types._class) {
var cNode = this.startNode();
node.declaration = this.parseClass(cNode, "nullableID");
@@ -1435,11 +1447,13 @@ pp$1.parseExport = function(node, exports) {
if (this.type !== types.string) { this.unexpected(); }
node.source = this.parseExprAtom();
} else {
- // check for keywords used as local names
for (var i = 0, list = node.specifiers; i < list.length; i += 1) {
+ // check for keywords used as local names
var spec = list[i];
this$1.checkUnreserved(spec.local);
+ // check if export is defined
+ this$1.checkLocalExport(spec.local);
}
node.source = null;
@@ -1618,7 +1632,7 @@ pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) {
switch (node.type) {
case "Identifier":
if (this.inAsync && node.name === "await")
- { this.raise(node.start, "Can not use 'await' as identifier inside an async function"); }
+ { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); }
break
case "ObjectPattern":
@@ -2119,42 +2133,53 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async";
- for (var computed = (void 0);;) {
- if ((computed = this$1.eat(types.bracketL)) || this$1.eat(types.dot)) {
- var node = this$1.startNodeAt(startPos, startLoc);
- node.object = base;
- node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true);
- node.computed = !!computed;
- if (computed) { this$1.expect(types.bracketR); }
- base = this$1.finishNode(node, "MemberExpression");
- } else if (!noCalls && this$1.eat(types.parenL)) {
- var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos;
- this$1.yieldPos = 0;
- this$1.awaitPos = 0;
- var exprList = this$1.parseExprList(types.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors);
- if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(types.arrow)) {
- this$1.checkPatternErrors(refDestructuringErrors, false);
- this$1.checkYieldAwaitInDefaultParams();
- this$1.yieldPos = oldYieldPos;
- this$1.awaitPos = oldAwaitPos;
- return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true)
- }
- this$1.checkExpressionErrors(refDestructuringErrors, true);
- this$1.yieldPos = oldYieldPos || this$1.yieldPos;
- this$1.awaitPos = oldAwaitPos || this$1.awaitPos;
- var node$1 = this$1.startNodeAt(startPos, startLoc);
- node$1.callee = base;
- node$1.arguments = exprList;
- base = this$1.finishNode(node$1, "CallExpression");
- } else if (this$1.type === types.backQuote) {
- var node$2 = this$1.startNodeAt(startPos, startLoc);
- node$2.tag = base;
- node$2.quasi = this$1.parseTemplate({isTagged: true});
- base = this$1.finishNode(node$2, "TaggedTemplateExpression");
- } else {
- return base
+ while (true) {
+ var element = this$1.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow);
+ if (element === base || element.type === "ArrowFunctionExpression") { return element }
+ base = element;
+ }
+};
+
+pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) {
+ var computed = this.eat(types.bracketL);
+ if (computed || this.eat(types.dot)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.property = computed ? this.parseExpression() : this.parseIdent(true);
+ node.computed = !!computed;
+ if (computed) { this.expect(types.bracketR); }
+ base = this.finishNode(node, "MemberExpression");
+ } else if (!noCalls && this.eat(types.parenL)) {
+ var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
+ this.yieldPos = 0;
+ this.awaitPos = 0;
+ this.awaitIdentPos = 0;
+ var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);
+ if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) {
+ this.checkPatternErrors(refDestructuringErrors, false);
+ this.checkYieldAwaitInDefaultParams();
+ if (this.awaitIdentPos > 0)
+ { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); }
+ this.yieldPos = oldYieldPos;
+ this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
+ return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)
}
+ this.checkExpressionErrors(refDestructuringErrors, true);
+ this.yieldPos = oldYieldPos || this.yieldPos;
+ this.awaitPos = oldAwaitPos || this.awaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;
+ var node$1 = this.startNodeAt(startPos, startLoc);
+ node$1.callee = base;
+ node$1.arguments = exprList;
+ base = this.finishNode(node$1, "CallExpression");
+ } else if (this.type === types.backQuote) {
+ var node$2 = this.startNodeAt(startPos, startLoc);
+ node$2.tag = base;
+ node$2.quasi = this.parseTemplate({isTagged: true});
+ base = this.finishNode(node$2, "TaggedTemplateExpression");
}
+ return base
};
// Parse an atomic expression — either a single token that is an
@@ -2193,14 +2218,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) {
case types.name:
var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;
- var id = this.parseIdent(this.type !== types.name);
+ var id = this.parseIdent(false);
if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function))
{ return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) }
if (canBeArrow && !this.canInsertSemicolon()) {
if (this.eat(types.arrow))
{ return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) }
if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) {
- id = this.parseIdent();
+ id = this.parseIdent(false);
if (this.canInsertSemicolon() || !this.eat(types.arrow))
{ this.unexpected(); }
return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)
@@ -2289,6 +2314,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) {
var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;
this.yieldPos = 0;
this.awaitPos = 0;
+ // Do not save awaitIdentPos to allow checking awaits nested in parameters
while (this.type !== types.parenR) {
first ? first = false : this$1.expect(types.comma);
if (allowTrailingComma && this$1.afterTrailingComma(types.parenR, true)) {
@@ -2532,7 +2558,10 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
{ this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); }
}
} else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") {
+ if (isGenerator || isAsync) { this.unexpected(); }
this.checkUnreserved(prop.key);
+ if (prop.key.name === "await" && !this.awaitIdentPos)
+ { this.awaitIdentPos = startPos; }
prop.kind = "init";
if (isPattern) {
prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key);
@@ -2572,7 +2601,7 @@ pp$3.initFunction = function(node) {
// Parse object or class method.
pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
- var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.initFunction(node);
if (this.options.ecmaVersion >= 6)
@@ -2582,22 +2611,24 @@ pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));
this.expect(types.parenL);
node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8);
this.checkYieldAwaitInDefaultParams();
- this.parseFunctionBody(node, false);
+ this.parseFunctionBody(node, false, true);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, "FunctionExpression")
};
// Parse arrow function expression with given parameters.
pp$3.parseArrowExpression = function(node, params, isAsync) {
- var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos;
+ var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;
this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);
this.initFunction(node);
@@ -2605,18 +2636,20 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
this.yieldPos = 0;
this.awaitPos = 0;
+ this.awaitIdentPos = 0;
node.params = this.toAssignableList(params, true);
- this.parseFunctionBody(node, true);
+ this.parseFunctionBody(node, true, false);
this.yieldPos = oldYieldPos;
this.awaitPos = oldAwaitPos;
+ this.awaitIdentPos = oldAwaitIdentPos;
return this.finishNode(node, "ArrowFunctionExpression")
};
// Parse function body and check parameters.
-pp$3.parseFunctionBody = function(node, isArrowFunction) {
+pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) {
var isExpression = isArrowFunction && this.type !== types.braceL;
var oldStrict = this.strict, useStrict = false;
@@ -2642,7 +2675,7 @@ pp$3.parseFunctionBody = function(node, isArrowFunction) {
// Add the params to varDeclaredNames to ensure that an error is thrown
// if a let/const declaration in the function clashes with one of the params.
- this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params));
+ this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));
node.body = this.parseBlock(false);
node.expression = false;
this.adaptDirectivePrologue(node.body.body);
@@ -2717,9 +2750,9 @@ pp$3.checkUnreserved = function(ref) {
var name = ref.name;
if (this.inGenerator && name === "yield")
- { this.raiseRecoverable(start, "Can not use 'yield' as identifier inside a generator"); }
+ { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); }
if (this.inAsync && name === "await")
- { this.raiseRecoverable(start, "Can not use 'await' as identifier inside an async function"); }
+ { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); }
if (this.keywords.test(name))
{ this.raise(start, ("Unexpected keyword '" + name + "'")); }
if (this.options.ecmaVersion < 6 &&
@@ -2727,7 +2760,7 @@ pp$3.checkUnreserved = function(ref) {
var re = this.strict ? this.reservedWordsStrict : this.reservedWords;
if (re.test(name)) {
if (!this.inAsync && name === "await")
- { this.raiseRecoverable(start, "Can not use keyword 'await' outside an async function"); }
+ { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); }
this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved"));
}
};
@@ -2757,7 +2790,11 @@ pp$3.parseIdent = function(liberal, isBinding) {
}
this.next();
this.finishNode(node, "Identifier");
- if (!liberal) { this.checkUnreserved(node); }
+ if (!liberal) {
+ this.checkUnreserved(node);
+ if (node.name === "await" && !this.awaitIdentPos)
+ { this.awaitIdentPos = node.start; }
+ }
return node
};
@@ -2837,7 +2874,7 @@ pp$5.exitScope = function() {
// > At the top level of a function, or script, function declarations are
// > treated like var declarations rather than like lexical declarations.
pp$5.treatFunctionsAsVarInScope = function(scope) {
- return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP);
+ return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)
};
pp$5.declareName = function(name, bindingType, pos) {
@@ -2848,6 +2885,8 @@ pp$5.declareName = function(name, bindingType, pos) {
var scope = this.currentScope();
redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;
scope.lexical.push(name);
+ if (this.inModule && (scope.flags & SCOPE_TOP))
+ { delete this.undefinedExports[name]; }
} else if (bindingType === BIND_SIMPLE_CATCH) {
var scope$1 = this.currentScope();
scope$1.lexical.push(name);
@@ -2861,18 +2900,28 @@ pp$5.declareName = function(name, bindingType, pos) {
} else {
for (var i = this.scopeStack.length - 1; i >= 0; --i) {
var scope$3 = this$1.scopeStack[i];
- if (scope$3.lexical.indexOf(name) > -1 && !(scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name ||
+ if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||
!this$1.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {
redeclared = true;
break
}
scope$3.var.push(name);
+ if (this$1.inModule && (scope$3.flags & SCOPE_TOP))
+ { delete this$1.undefinedExports[name]; }
if (scope$3.flags & SCOPE_VAR) { break }
}
}
if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); }
};
+pp$5.checkLocalExport = function(id) {
+ // scope.functions must be empty as Module code is always strict.
+ if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&
+ this.scopeStack[0].var.indexOf(id.name) === -1) {
+ this.undefinedExports[id.name] = id;
+ }
+};
+
pp$5.currentScope = function() {
return this.scopeStack[this.scopeStack.length - 1]
};
@@ -3088,473 +3137,51 @@ types.name.updateContext = function(prevType) {
this.exprAllowed = allowed;
};
-var data = {
- "$LONE": [
- "ASCII",
- "ASCII_Hex_Digit",
- "AHex",
- "Alphabetic",
- "Alpha",
- "Any",
- "Assigned",
- "Bidi_Control",
- "Bidi_C",
- "Bidi_Mirrored",
- "Bidi_M",
- "Case_Ignorable",
- "CI",
- "Cased",
- "Changes_When_Casefolded",
- "CWCF",
- "Changes_When_Casemapped",
- "CWCM",
- "Changes_When_Lowercased",
- "CWL",
- "Changes_When_NFKC_Casefolded",
- "CWKCF",
- "Changes_When_Titlecased",
- "CWT",
- "Changes_When_Uppercased",
- "CWU",
- "Dash",
- "Default_Ignorable_Code_Point",
- "DI",
- "Deprecated",
- "Dep",
- "Diacritic",
- "Dia",
- "Emoji",
- "Emoji_Component",
- "Emoji_Modifier",
- "Emoji_Modifier_Base",
- "Emoji_Presentation",
- "Extender",
- "Ext",
- "Grapheme_Base",
- "Gr_Base",
- "Grapheme_Extend",
- "Gr_Ext",
- "Hex_Digit",
- "Hex",
- "IDS_Binary_Operator",
- "IDSB",
- "IDS_Trinary_Operator",
- "IDST",
- "ID_Continue",
- "IDC",
- "ID_Start",
- "IDS",
- "Ideographic",
- "Ideo",
- "Join_Control",
- "Join_C",
- "Logical_Order_Exception",
- "LOE",
- "Lowercase",
- "Lower",
- "Math",
- "Noncharacter_Code_Point",
- "NChar",
- "Pattern_Syntax",
- "Pat_Syn",
- "Pattern_White_Space",
- "Pat_WS",
- "Quotation_Mark",
- "QMark",
- "Radical",
- "Regional_Indicator",
- "RI",
- "Sentence_Terminal",
- "STerm",
- "Soft_Dotted",
- "SD",
- "Terminal_Punctuation",
- "Term",
- "Unified_Ideograph",
- "UIdeo",
- "Uppercase",
- "Upper",
- "Variation_Selector",
- "VS",
- "White_Space",
- "space",
- "XID_Continue",
- "XIDC",
- "XID_Start",
- "XIDS"
- ],
- "General_Category": [
- "Cased_Letter",
- "LC",
- "Close_Punctuation",
- "Pe",
- "Connector_Punctuation",
- "Pc",
- "Control",
- "Cc",
- "cntrl",
- "Currency_Symbol",
- "Sc",
- "Dash_Punctuation",
- "Pd",
- "Decimal_Number",
- "Nd",
- "digit",
- "Enclosing_Mark",
- "Me",
- "Final_Punctuation",
- "Pf",
- "Format",
- "Cf",
- "Initial_Punctuation",
- "Pi",
- "Letter",
- "L",
- "Letter_Number",
- "Nl",
- "Line_Separator",
- "Zl",
- "Lowercase_Letter",
- "Ll",
- "Mark",
- "M",
- "Combining_Mark",
- "Math_Symbol",
- "Sm",
- "Modifier_Letter",
- "Lm",
- "Modifier_Symbol",
- "Sk",
- "Nonspacing_Mark",
- "Mn",
- "Number",
- "N",
- "Open_Punctuation",
- "Ps",
- "Other",
- "C",
- "Other_Letter",
- "Lo",
- "Other_Number",
- "No",
- "Other_Punctuation",
- "Po",
- "Other_Symbol",
- "So",
- "Paragraph_Separator",
- "Zp",
- "Private_Use",
- "Co",
- "Punctuation",
- "P",
- "punct",
- "Separator",
- "Z",
- "Space_Separator",
- "Zs",
- "Spacing_Mark",
- "Mc",
- "Surrogate",
- "Cs",
- "Symbol",
- "S",
- "Titlecase_Letter",
- "Lt",
- "Unassigned",
- "Cn",
- "Uppercase_Letter",
- "Lu"
- ],
- "Script": [
- "Adlam",
- "Adlm",
- "Ahom",
- "Anatolian_Hieroglyphs",
- "Hluw",
- "Arabic",
- "Arab",
- "Armenian",
- "Armn",
- "Avestan",
- "Avst",
- "Balinese",
- "Bali",
- "Bamum",
- "Bamu",
- "Bassa_Vah",
- "Bass",
- "Batak",
- "Batk",
- "Bengali",
- "Beng",
- "Bhaiksuki",
- "Bhks",
- "Bopomofo",
- "Bopo",
- "Brahmi",
- "Brah",
- "Braille",
- "Brai",
- "Buginese",
- "Bugi",
- "Buhid",
- "Buhd",
- "Canadian_Aboriginal",
- "Cans",
- "Carian",
- "Cari",
- "Caucasian_Albanian",
- "Aghb",
- "Chakma",
- "Cakm",
- "Cham",
- "Cherokee",
- "Cher",
- "Common",
- "Zyyy",
- "Coptic",
- "Copt",
- "Qaac",
- "Cuneiform",
- "Xsux",
- "Cypriot",
- "Cprt",
- "Cyrillic",
- "Cyrl",
- "Deseret",
- "Dsrt",
- "Devanagari",
- "Deva",
- "Duployan",
- "Dupl",
- "Egyptian_Hieroglyphs",
- "Egyp",
- "Elbasan",
- "Elba",
- "Ethiopic",
- "Ethi",
- "Georgian",
- "Geor",
- "Glagolitic",
- "Glag",
- "Gothic",
- "Goth",
- "Grantha",
- "Gran",
- "Greek",
- "Grek",
- "Gujarati",
- "Gujr",
- "Gurmukhi",
- "Guru",
- "Han",
- "Hani",
- "Hangul",
- "Hang",
- "Hanunoo",
- "Hano",
- "Hatran",
- "Hatr",
- "Hebrew",
- "Hebr",
- "Hiragana",
- "Hira",
- "Imperial_Aramaic",
- "Armi",
- "Inherited",
- "Zinh",
- "Qaai",
- "Inscriptional_Pahlavi",
- "Phli",
- "Inscriptional_Parthian",
- "Prti",
- "Javanese",
- "Java",
- "Kaithi",
- "Kthi",
- "Kannada",
- "Knda",
- "Katakana",
- "Kana",
- "Kayah_Li",
- "Kali",
- "Kharoshthi",
- "Khar",
- "Khmer",
- "Khmr",
- "Khojki",
- "Khoj",
- "Khudawadi",
- "Sind",
- "Lao",
- "Laoo",
- "Latin",
- "Latn",
- "Lepcha",
- "Lepc",
- "Limbu",
- "Limb",
- "Linear_A",
- "Lina",
- "Linear_B",
- "Linb",
- "Lisu",
- "Lycian",
- "Lyci",
- "Lydian",
- "Lydi",
- "Mahajani",
- "Mahj",
- "Malayalam",
- "Mlym",
- "Mandaic",
- "Mand",
- "Manichaean",
- "Mani",
- "Marchen",
- "Marc",
- "Masaram_Gondi",
- "Gonm",
- "Meetei_Mayek",
- "Mtei",
- "Mende_Kikakui",
- "Mend",
- "Meroitic_Cursive",
- "Merc",
- "Meroitic_Hieroglyphs",
- "Mero",
- "Miao",
- "Plrd",
- "Modi",
- "Mongolian",
- "Mong",
- "Mro",
- "Mroo",
- "Multani",
- "Mult",
- "Myanmar",
- "Mymr",
- "Nabataean",
- "Nbat",
- "New_Tai_Lue",
- "Talu",
- "Newa",
- "Nko",
- "Nkoo",
- "Nushu",
- "Nshu",
- "Ogham",
- "Ogam",
- "Ol_Chiki",
- "Olck",
- "Old_Hungarian",
- "Hung",
- "Old_Italic",
- "Ital",
- "Old_North_Arabian",
- "Narb",
- "Old_Permic",
- "Perm",
- "Old_Persian",
- "Xpeo",
- "Old_South_Arabian",
- "Sarb",
- "Old_Turkic",
- "Orkh",
- "Oriya",
- "Orya",
- "Osage",
- "Osge",
- "Osmanya",
- "Osma",
- "Pahawh_Hmong",
- "Hmng",
- "Palmyrene",
- "Palm",
- "Pau_Cin_Hau",
- "Pauc",
- "Phags_Pa",
- "Phag",
- "Phoenician",
- "Phnx",
- "Psalter_Pahlavi",
- "Phlp",
- "Rejang",
- "Rjng",
- "Runic",
- "Runr",
- "Samaritan",
- "Samr",
- "Saurashtra",
- "Saur",
- "Sharada",
- "Shrd",
- "Shavian",
- "Shaw",
- "Siddham",
- "Sidd",
- "SignWriting",
- "Sgnw",
- "Sinhala",
- "Sinh",
- "Sora_Sompeng",
- "Sora",
- "Soyombo",
- "Soyo",
- "Sundanese",
- "Sund",
- "Syloti_Nagri",
- "Sylo",
- "Syriac",
- "Syrc",
- "Tagalog",
- "Tglg",
- "Tagbanwa",
- "Tagb",
- "Tai_Le",
- "Tale",
- "Tai_Tham",
- "Lana",
- "Tai_Viet",
- "Tavt",
- "Takri",
- "Takr",
- "Tamil",
- "Taml",
- "Tangut",
- "Tang",
- "Telugu",
- "Telu",
- "Thaana",
- "Thaa",
- "Thai",
- "Tibetan",
- "Tibt",
- "Tifinagh",
- "Tfng",
- "Tirhuta",
- "Tirh",
- "Ugaritic",
- "Ugar",
- "Vai",
- "Vaii",
- "Warang_Citi",
- "Wara",
- "Yi",
- "Yiii",
- "Zanabazar_Square",
- "Zanb"
- ]
-};
-Array.prototype.push.apply(data.$LONE, data.General_Category);
-data.gc = data.General_Category;
-data.sc = data.Script_Extensions = data.scx = data.Script;
+// This file contains Unicode properties extracted from the ECMAScript
+// specification. The lists are extracted like so:
+// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)
+
+// #table-binary-unicode-properties
+var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS";
+var unicodeBinaryProperties = {
+ 9: ecma9BinaryProperties,
+ 10: ecma9BinaryProperties + " Extended_Pictographic"
+};
+
+// #table-unicode-general-category-values
+var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu";
+
+// #table-unicode-script-values
+var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb";
+var unicodeScriptValues = {
+ 9: ecma9ScriptValues,
+ 10: ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"
+};
+
+var data = {};
+function buildUnicodeData(ecmaVersion) {
+ var d = data[ecmaVersion] = {
+ binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues),
+ nonBinary: {
+ General_Category: wordsRegexp(unicodeGeneralCategoryValues),
+ Script: wordsRegexp(unicodeScriptValues[ecmaVersion])
+ }
+ };
+ d.nonBinary.Script_Extensions = d.nonBinary.Script;
+
+ d.nonBinary.gc = d.nonBinary.General_Category;
+ d.nonBinary.sc = d.nonBinary.Script;
+ d.nonBinary.scx = d.nonBinary.Script_Extensions;
+}
+buildUnicodeData(9);
+buildUnicodeData(10);
var pp$9 = Parser.prototype;
var RegExpValidationState = function RegExpValidationState(parser) {
this.parser = parser;
this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "");
+ this.unicodeProperties = data[parser.options.ecmaVersion >= 10 ? 10 : parser.options.ecmaVersion];
this.source = "";
this.flags = "";
this.start = 0;
@@ -4338,14 +3965,14 @@ pp$9.regexp_eatUnicodePropertyValueExpression = function(state) {
return false
};
pp$9.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {
- if (!data.hasOwnProperty(name) || data[name].indexOf(value) === -1) {
- state.raise("Invalid property name");
- }
+ if (!has(state.unicodeProperties.nonBinary, name))
+ { state.raise("Invalid property name"); }
+ if (!state.unicodeProperties.nonBinary[name].test(value))
+ { state.raise("Invalid property value"); }
};
pp$9.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {
- if (data.$LONE.indexOf(nameOrValue) === -1) {
- state.raise("Invalid property name");
- }
+ if (!state.unicodeProperties.binary.test(nameOrValue))
+ { state.raise("Invalid property name"); }
};
// UnicodePropertyName ::
@@ -5328,7 +4955,7 @@ pp$8.readWord = function() {
//
// [walk]: util/walk.js
-var version = "6.0.6";
+var version = "6.1.0";
// The main exported interface (under `self.acorn` when in the
// browser) is a `parse` function that takes a code string and
diff --git a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs.map b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs.map
index 6465f855dc..e689d6c223 100644
--- a/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs.map
+++ b/tools/node_modules/eslint/node_modules/acorn/dist/acorn.mjs.map
@@ -1 +1 @@
-{"version":3,"file":"acorn.mjs","sources":["../src/identifier.js","../src/tokentype.js","../src/whitespace.js","../src/util.js","../src/locutil.js","../src/options.js","../src/scopeflags.js","../src/state.js","../src/parseutil.js","../src/statement.js","../src/lval.js","../src/expression.js","../src/location.js","../src/scope.js","../src/node.js","../src/tokencontext.js","../src/unicode-property-data.js","../src/regexp.js","../src/tokenize.js","../src/index.js"],"sourcesContent":["// Reserved word lists for various dialects of the language\n\nexport const reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n}\n\n// And the keywords\n\nconst ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n\nexport const keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\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\"\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\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\"\n\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\")\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\")\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,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]\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,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]\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n let pos = 0x10000\n for (let i = 0; i < set.length; i += 2) {\n pos += set[i]\n if (pos > code) return false\n pos += set[i + 1]\n if (pos >= code) return true\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code, astral) {\n if (code < 65) return code === 36\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code, astral) {\n if (code < 48) return code === 36\n if (code < 58) return true\n if (code < 65) return false\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n","// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nexport class TokenType {\n constructor(label, conf = {}) {\n this.label = label\n this.keyword = conf.keyword\n this.beforeExpr = !!conf.beforeExpr\n this.startsExpr = !!conf.startsExpr\n this.isLoop = !!conf.isLoop\n this.isAssign = !!conf.isAssign\n this.prefix = !!conf.prefix\n this.postfix = !!conf.postfix\n this.binop = conf.binop || null\n this.updateContext = null\n }\n}\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nconst beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}\n\n// Map keyword names to token types.\n\nexport const keywords = {}\n\n// Succinct definitions of keyword token types\nfunction kw(name, options = {}) {\n options.keyword = name\n return keywords[name] = new TokenType(name, options)\n}\n\nexport const types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n}\n","// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nexport const lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\")\n\nexport function isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))\n}\n\nexport const nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g\n","const {hasOwnProperty, toString} = Object.prototype\n\n// Checks if an object has a property.\n\nexport function has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nexport const isArray = Array.isArray || ((obj) => (\n toString.call(obj) === \"[object Array]\"\n))\n","import {lineBreakG} from \"./whitespace\"\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n constructor(line, col) {\n this.line = line\n this.column = col\n }\n\n offset(n) {\n return new Position(this.line, this.column + n)\n }\n}\n\nexport class SourceLocation {\n constructor(p, start, end) {\n this.start = start\n this.end = end\n if (p.sourceFile !== null) this.source = p.sourceFile\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input, offset) {\n for (let line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur\n let match = lineBreakG.exec(input)\n if (match && match.index < offset) {\n ++line\n cur = match.index + match[0].length\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n","import {has, isArray} from \"./util\"\nimport {SourceLocation} from \"./locutil\"\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport const defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 9.\n ecmaVersion: 9,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts) {\n let options = {}\n\n for (let opt in defaultOptions)\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]\n\n if (options.ecmaVersion >= 2015)\n options.ecmaVersion -= 2009\n\n if (options.allowReserved == null)\n options.allowReserved = options.ecmaVersion < 5\n\n if (isArray(options.onToken)) {\n let tokens = options.onToken\n options.onToken = (token) => tokens.push(token)\n }\n if (isArray(options.onComment))\n options.onComment = pushComment(options, options.onComment)\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n let comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n }\n if (options.locations)\n comment.loc = new SourceLocation(this, startLoc, endLoc)\n if (options.ranges)\n comment.range = [start, end]\n array.push(comment)\n }\n}\n","// Each scope gets a bitset that may contain these flags\nexport const\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128\n\nexport function functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nexport const\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5 // Special case for function names as bound inside the function\n","import {reservedWords, keywords} from \"./identifier\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\nimport {getOptions} from \"./options\"\nimport {SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_SUPER, SCOPE_DIRECT_SUPER} from \"./scopeflags\"\n\nfunction keywordRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\nexport class Parser {\n constructor(options, input, startPos) {\n this.options = options = getOptions(options)\n this.sourceFile = options.sourceFile\n this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])\n let reserved = \"\"\n if (!options.allowReserved) {\n for (let v = options.ecmaVersion;; v--)\n if (reserved = reservedWords[v]) break\n if (options.sourceType === \"module\") reserved += \" await\"\n }\n this.reservedWords = keywordRegexp(reserved)\n let reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict\n this.reservedWordsStrict = keywordRegexp(reservedStrict)\n this.reservedWordsStrictBind = keywordRegexp(reservedStrict + \" \" + reservedWords.strictBind)\n this.input = String(input)\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length\n } else {\n this.pos = this.lineStart = 0\n this.curLine = 1\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof\n // For tokens that include more information than their type, the value\n this.value = null\n // Its start and end offset\n this.start = this.end = this.pos\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition()\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null\n this.lastTokStart = this.lastTokEnd = this.pos\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext()\n this.exprAllowed = true\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\"\n this.strict = this.inModule || this.strictDirective(this.pos)\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = 0\n // Labels in scope.\n this.labels = []\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n this.skipLineComment(2)\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = []\n this.enterScope(SCOPE_TOP)\n\n // For RegExp validation\n this.regexpState = null\n }\n\n parse() {\n let node = this.options.program || this.startNode()\n this.nextToken()\n return this.parseTopLevel(node)\n }\n\n get inFunction() { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }\n get inGenerator() { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }\n get inAsync() { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }\n get allowSuper() { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }\n get allowDirectSuper() { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }\n get treatFunctionsAsVar() { return this.treatFunctionsAsVarInScope(this.currentScope()) }\n\n // Switch to a getter for 7.0.0.\n inNonArrowFunction() { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }\n\n static extend(...plugins) {\n let cls = this\n for (let i = 0; i < plugins.length; i++) cls = plugins[i](cls)\n return cls\n }\n\n static parse(input, options) {\n return new this(options, input).parse()\n }\n\n static parseExpressionAt(input, pos, options) {\n let parser = new this(options, input, pos)\n parser.nextToken()\n return parser.parseExpression()\n }\n\n static tokenizer(input, options) {\n return new this(options, input)\n }\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\n\nconst pp = Parser.prototype\n\n// ## Parser utilities\n\nconst literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\")/\npp.strictDirective = function(start) {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n let match = literal.exec(this.input.slice(start))\n if (!match) return false\n if ((match[1] || match[2]) === \"use strict\") return true\n start += match[0].length\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n if (this.input[start] === ';')\n start++\n }\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next()\n return true\n } else {\n return false\n }\n}\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === tt.name && this.value === name && !this.containsEsc\n}\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) return false\n this.next()\n return true\n}\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) this.unexpected()\n}\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === tt.eof ||\n this.type === tt.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)\n return true\n }\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()\n}\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)\n if (!notNext)\n this.next()\n return true\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected()\n}\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\")\n}\n\nexport function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) return\n if (refDestructuringErrors.trailingComma > -1)\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\")\n let parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind\n if (parens > -1) this.raiseRecoverable(parens, \"Parenthesized pattern\")\n}\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) return false\n let {shorthandAssign, doubleProto} = refDestructuringErrors\n if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0\n if (shorthandAssign >= 0)\n this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\")\n if (doubleProto >= 0)\n this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\")\n}\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\")\n if (this.awaitPos)\n this.raise(this.awaitPos, \"Await expression cannot be a default value\")\n}\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n return this.isSimpleAssignTarget(expr.expression)\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\nimport {isIdentifierStart, isIdentifierChar, keywordRelationalOperator} from \"./identifier\"\nimport {has} from \"./util\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {functionFlags, SCOPE_SIMPLE_CATCH, BIND_SIMPLE_CATCH, BIND_LEXICAL, BIND_VAR, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function(node) {\n let exports = {}\n if (!node.body) node.body = []\n while (this.type !== tt.eof) {\n let stmt = this.parseStatement(null, true, exports)\n node.body.push(stmt)\n }\n this.adaptDirectivePrologue(node.body)\n this.next()\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType\n }\n return this.finishNode(node, \"Program\")\n}\n\nconst loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"}\n\npp.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) return false\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91) return true // '['\n if (context) return false\n\n if (nextCh === 123) return true // '{'\n if (isIdentifierStart(nextCh, true)) {\n let pos = next + 1\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos\n let ident = this.input.slice(next, pos)\n if (!keywordRelationalOperator.test(ident)) return true\n }\n return false\n}\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n return false\n\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function(context, topLevel, exports) {\n let starttype = this.type, node = this.startNode(), kind\n\n if (this.isLet(context)) {\n starttype = tt._var\n kind = \"let\"\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case tt._debugger: return this.parseDebuggerStatement(node)\n case tt._do: return this.parseDoStatement(node)\n case tt._for: return this.parseForStatement(node)\n case tt._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) this.unexpected()\n return this.parseFunctionStatement(node, false, !context)\n case tt._class:\n if (context) this.unexpected()\n return this.parseClass(node, true)\n case tt._if: return this.parseIfStatement(node)\n case tt._return: return this.parseReturnStatement(node)\n case tt._switch: return this.parseSwitchStatement(node)\n case tt._throw: return this.parseThrowStatement(node)\n case tt._try: return this.parseTryStatement(node)\n case tt._const: case tt._var:\n kind = kind || this.value\n if (context && kind !== \"var\") this.unexpected()\n return this.parseVarStatement(node, kind)\n case tt._while: return this.parseWhileStatement(node)\n case tt._with: return this.parseWithStatement(node)\n case tt.braceL: return this.parseBlock(true, node)\n case tt.semi: return this.parseEmptyStatement(node)\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\")\n if (!this.inModule)\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\")\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) this.unexpected()\n this.next()\n return this.parseFunctionStatement(node, true, !context)\n }\n\n let maybeName = this.value, expr = this.parseExpression()\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon))\n return this.parseLabeledStatement(node, maybeName, expr, context)\n else return this.parseExpressionStatement(node, expr)\n }\n}\n\npp.parseBreakContinueStatement = function(node, keyword) {\n let isBreak = keyword === \"break\"\n this.next()\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null\n else if (this.type !== tt.name) this.unexpected()\n else {\n node.label = this.parseIdent()\n this.semicolon()\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n let i = 0\n for (; i < this.labels.length; ++i) {\n let lab = this.labels[i]\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break\n if (node.label && isBreak) break\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword)\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n}\n\npp.parseDebuggerStatement = function(node) {\n this.next()\n this.semicolon()\n return this.finishNode(node, \"DebuggerStatement\")\n}\n\npp.parseDoStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"do\")\n this.labels.pop()\n this.expect(tt._while)\n node.test = this.parseParenExpression()\n if (this.options.ecmaVersion >= 6)\n this.eat(tt.semi)\n else\n this.semicolon()\n return this.finishNode(node, \"DoWhileStatement\")\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function(node) {\n this.next()\n let awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual(\"await\")) ? this.lastTokStart : -1\n this.labels.push(loopLabel)\n this.enterScope(0)\n this.expect(tt.parenL)\n if (this.type === tt.semi) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, null)\n }\n let isLet = this.isLet()\n if (this.type === tt._var || this.type === tt._const || isLet) {\n let init = this.startNode(), kind = isLet ? \"let\" : this.value\n this.next()\n this.parseVar(init, true, kind)\n this.finishNode(init, \"VariableDeclaration\")\n if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1 &&\n !(kind !== \"var\" && init.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n }\n let refDestructuringErrors = new DestructuringErrors\n let init = this.parseExpression(true, refDestructuringErrors)\n if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n this.toAssignable(init, false, refDestructuringErrors)\n this.checkLVal(init)\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n}\n\npp.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next()\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n}\n\npp.parseIfStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\")\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null\n return this.finishNode(node, \"IfStatement\")\n}\n\npp.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n this.raise(this.start, \"'return' outside of function\")\n this.next()\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null\n else { node.argument = this.parseExpression(); this.semicolon() }\n return this.finishNode(node, \"ReturnStatement\")\n}\n\npp.parseSwitchStatement = function(node) {\n this.next()\n node.discriminant = this.parseParenExpression()\n node.cases = []\n this.expect(tt.braceL)\n this.labels.push(switchLabel)\n this.enterScope(0)\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur\n for (let sawDefault = false; this.type !== tt.braceR;) {\n if (this.type === tt._case || this.type === tt._default) {\n let isCase = this.type === tt._case\n if (cur) this.finishNode(cur, \"SwitchCase\")\n node.cases.push(cur = this.startNode())\n cur.consequent = []\n this.next()\n if (isCase) {\n cur.test = this.parseExpression()\n } else {\n if (sawDefault) this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\")\n sawDefault = true\n cur.test = null\n }\n this.expect(tt.colon)\n } else {\n if (!cur) this.unexpected()\n cur.consequent.push(this.parseStatement(null))\n }\n }\n this.exitScope()\n if (cur) this.finishNode(cur, \"SwitchCase\")\n this.next() // Closing brace\n this.labels.pop()\n return this.finishNode(node, \"SwitchStatement\")\n}\n\npp.parseThrowStatement = function(node) {\n this.next()\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n this.raise(this.lastTokEnd, \"Illegal newline after throw\")\n node.argument = this.parseExpression()\n this.semicolon()\n return this.finishNode(node, \"ThrowStatement\")\n}\n\n// Reused empty array added for node fields that are always empty.\n\nconst empty = []\n\npp.parseTryStatement = function(node) {\n this.next()\n node.block = this.parseBlock()\n node.handler = null\n if (this.type === tt._catch) {\n let clause = this.startNode()\n this.next()\n if (this.eat(tt.parenL)) {\n clause.param = this.parseBindingAtom()\n let simple = clause.param.type === \"Identifier\"\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0)\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL)\n this.expect(tt.parenR)\n } else {\n if (this.options.ecmaVersion < 10) this.unexpected()\n clause.param = null\n this.enterScope(0)\n }\n clause.body = this.parseBlock(false)\n this.exitScope()\n node.handler = this.finishNode(clause, \"CatchClause\")\n }\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null\n if (!node.handler && !node.finalizer)\n this.raise(node.start, \"Missing catch or finally clause\")\n return this.finishNode(node, \"TryStatement\")\n}\n\npp.parseVarStatement = function(node, kind) {\n this.next()\n this.parseVar(node, false, kind)\n this.semicolon()\n return this.finishNode(node, \"VariableDeclaration\")\n}\n\npp.parseWhileStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"while\")\n this.labels.pop()\n return this.finishNode(node, \"WhileStatement\")\n}\n\npp.parseWithStatement = function(node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\")\n this.next()\n node.object = this.parseParenExpression()\n node.body = this.parseStatement(\"with\")\n return this.finishNode(node, \"WithStatement\")\n}\n\npp.parseEmptyStatement = function(node) {\n this.next()\n return this.finishNode(node, \"EmptyStatement\")\n}\n\npp.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (let label of this.labels)\n if (label.name === maybeName)\n this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\")\n let kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null\n for (let i = this.labels.length - 1; i >= 0; i--) {\n let label = this.labels[i]\n if (label.statementStart === node.start) {\n // Update information about previous labels on this node\n label.statementStart = this.start\n label.kind = kind\n } else break\n }\n this.labels.push({name: maybeName, kind, statementStart: this.start})\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\")\n this.labels.pop()\n node.label = expr\n return this.finishNode(node, \"LabeledStatement\")\n}\n\npp.parseExpressionStatement = function(node, expr) {\n node.expression = expr\n this.semicolon()\n return this.finishNode(node, \"ExpressionStatement\")\n}\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function(createNewLexicalScope = true, node = this.startNode()) {\n node.body = []\n this.expect(tt.braceL)\n if (createNewLexicalScope) this.enterScope(0)\n while (!this.eat(tt.braceR)) {\n let stmt = this.parseStatement(null)\n node.body.push(stmt)\n }\n if (createNewLexicalScope) this.exitScope()\n return this.finishNode(node, \"BlockStatement\")\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function(node, init) {\n node.init = init\n this.expect(tt.semi)\n node.test = this.type === tt.semi ? null : this.parseExpression()\n this.expect(tt.semi)\n node.update = this.type === tt.parenR ? null : this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, \"ForStatement\")\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function(node, init) {\n let type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\"\n this.next()\n if (type === \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" ||\n (init.type === \"VariableDeclaration\" && init.declarations[0].init != null &&\n (this.strict || init.declarations[0].id.type !== \"Identifier\")))\n this.raise(init.start, \"Invalid assignment in for-in loop head\")\n }\n node.left = init\n node.right = type === \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, type)\n}\n\n// Parse a list of variable declarations.\n\npp.parseVar = function(node, isFor, kind) {\n node.declarations = []\n node.kind = kind\n for (;;) {\n let decl = this.startNode()\n this.parseVarId(decl, kind)\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor)\n } else if (kind === \"const\" && !(this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected()\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.type === tt._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\")\n } else {\n decl.init = null\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"))\n if (!this.eat(tt.comma)) break\n }\n return node\n}\n\npp.parseVarId = function(decl, kind) {\n if ((kind === \"const\" || kind === \"let\") && this.isContextual(\"let\")) {\n this.raiseRecoverable(this.start, \"let is disallowed as a lexically bound name\");\n }\n decl.id = this.parseBindingAtom()\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false)\n}\n\nconst FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseFunction = function(node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node)\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === tt.star && (statement & FUNC_HANGING_STATEMENT))\n this.unexpected()\n node.generator = this.eat(tt.star)\n }\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== tt.name ? null : this.parseIdent()\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION);\n }\n\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.enterScope(functionFlags(node.async, node.generator))\n\n if (!(statement & FUNC_STATEMENT))\n node.id = this.type === tt.name ? this.parseIdent() : null\n\n this.parseFunctionParams(node)\n this.parseFunctionBody(node, allowExpressionBody)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n}\n\npp.parseFunctionParams = function(node) {\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function(node, isStatement) {\n this.next()\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n const oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement)\n this.parseClassSuper(node)\n let classBody = this.startNode()\n let hadConstructor = false\n classBody.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n const element = this.parseClassElement(node.superClass !== null)\n if (element) {\n classBody.body.push(element)\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) this.raise(element.start, \"Duplicate constructor in the same class\")\n hadConstructor = true\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\")\n this.strict = oldStrict;\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n}\n\npp.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(tt.semi)) return null\n\n let method = this.startNode()\n const tryContextual = (k, noLineBreak = false) => {\n const start = this.start, startLoc = this.startLoc\n if (!this.eatContextual(k)) return false\n if (this.type !== tt.parenL && (!noLineBreak || !this.canInsertSemicolon())) return true\n if (method.key) this.unexpected()\n method.computed = false\n method.key = this.startNodeAt(start, startLoc)\n method.key.name = k\n this.finishNode(method.key, \"Identifier\")\n return false\n }\n\n method.kind = \"method\"\n method.static = tryContextual(\"static\")\n let isGenerator = this.eat(tt.star)\n let isAsync = false\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\"\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\"\n }\n }\n if (!method.key) this.parsePropertyName(method)\n let {key} = method\n let allowsDirectSuper = false\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") this.raise(key.start, \"Constructor can't have get/set modifier\")\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\")\n if (isAsync) this.raise(key.start, \"Constructor can't be an async method\")\n method.kind = \"constructor\"\n allowsDirectSuper = constructorAllowsSuper\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\")\n }\n this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper)\n if (method.kind === \"get\" && method.value.params.length !== 0)\n this.raiseRecoverable(method.value.start, \"getter should have no params\")\n if (method.kind === \"set\" && method.value.params.length !== 1)\n this.raiseRecoverable(method.value.start, \"setter should have exactly one param\")\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\")\n return method\n}\n\npp.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper)\n return this.finishNode(method, \"MethodDefinition\")\n}\n\npp.parseClassId = function(node, isStatement) {\n if (this.type === tt.name) {\n node.id = this.parseIdent();\n if (isStatement === true)\n this.checkLVal(node.id, BIND_LEXICAL, false)\n } else {\n if (isStatement === true)\n this.unexpected();\n node.id = null;\n }\n}\n\npp.parseClassSuper = function(node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null\n}\n\n// Parses module export declaration.\n\npp.parseExport = function(node, exports) {\n this.next()\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\")\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n this.semicolon()\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(tt._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart)\n let isAsync\n if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {\n let fNode = this.startNode()\n this.next()\n if (isAsync) this.next()\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync, true)\n } else if (this.type === tt._class) {\n let cNode = this.startNode()\n node.declaration = this.parseClass(cNode, \"nullableID\")\n } else {\n node.declaration = this.parseMaybeAssign()\n this.semicolon()\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null)\n if (node.declaration.type === \"VariableDeclaration\")\n this.checkVariableExport(exports, node.declaration.declarations)\n else\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)\n node.specifiers = []\n node.source = null\n } else { // export { x, y as z } [from '...']\n node.declaration = null\n node.specifiers = this.parseExportSpecifiers(exports)\n if (this.eatContextual(\"from\")) {\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n } else {\n // check for keywords used as local names\n for (let spec of node.specifiers) {\n this.checkUnreserved(spec.local)\n }\n\n node.source = null\n }\n this.semicolon()\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n}\n\npp.checkExport = function(exports, name, pos) {\n if (!exports) return\n if (has(exports, name))\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\")\n exports[name] = true\n}\n\npp.checkPatternExport = function(exports, pat) {\n let type = pat.type\n if (type === \"Identifier\")\n this.checkExport(exports, pat.name, pat.start)\n else if (type === \"ObjectPattern\")\n for (let prop of pat.properties)\n this.checkPatternExport(exports, prop)\n else if (type === \"ArrayPattern\")\n for (let elt of pat.elements) {\n if (elt) this.checkPatternExport(exports, elt)\n }\n else if (type === \"Property\")\n this.checkPatternExport(exports, pat.value)\n else if (type === \"AssignmentPattern\")\n this.checkPatternExport(exports, pat.left)\n else if (type === \"RestElement\")\n this.checkPatternExport(exports, pat.argument)\n else if (type === \"ParenthesizedExpression\")\n this.checkPatternExport(exports, pat.expression)\n}\n\npp.checkVariableExport = function(exports, decls) {\n if (!exports) return\n for (let decl of decls)\n this.checkPatternExport(exports, decl.id)\n}\n\npp.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n}\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function(exports) {\n let nodes = [], first = true\n // export { x, y as z } [from '...']\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.local = this.parseIdent(true)\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local\n this.checkExport(exports, node.exported.name, node.exported.start)\n nodes.push(this.finishNode(node, \"ExportSpecifier\"))\n }\n return nodes\n}\n\n// Parses import declaration.\n\npp.parseImport = function(node) {\n this.next()\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty\n node.source = this.parseExprAtom()\n } else {\n node.specifiers = this.parseImportSpecifiers()\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n }\n this.semicolon()\n return this.finishNode(node, \"ImportDeclaration\")\n}\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function() {\n let nodes = [], first = true\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n let node = this.startNode()\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"))\n if (!this.eat(tt.comma)) return nodes\n }\n if (this.type === tt.star) {\n let node = this.startNode()\n this.next()\n this.expectContextual(\"as\")\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"))\n return nodes\n }\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.imported = this.parseIdent(true)\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent()\n } else {\n this.checkUnreserved(node.imported)\n node.local = node.imported\n }\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportSpecifier\"))\n }\n return nodes\n}\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp.adaptDirectivePrologue = function(statements) {\n for (let i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1)\n }\n}\npp.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {has} from \"./util\"\nimport {BIND_NONE, BIND_OUTSIDE} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n this.raise(node.start, \"Can not use 'await' as identifier inside an async function\")\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n for (let prop of node.properties) {\n this.toAssignable(prop, isBinding)\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\")\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") this.raise(node.key.start, \"Object pattern can't contain getter or setter\")\n this.toAssignable(node.value, isBinding)\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n this.toAssignableList(node.elements, isBinding)\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\"\n this.toAssignable(node.argument, isBinding)\n if (node.argument.type === \"AssignmentPattern\")\n this.raise(node.argument.start, \"Rest elements cannot have a default value\")\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\")\n node.type = \"AssignmentPattern\"\n delete node.operator\n this.toAssignable(node.left, isBinding)\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors)\n break\n\n case \"MemberExpression\":\n if (!isBinding) break\n\n default:\n this.raise(node.start, \"Assigning to rvalue\")\n }\n } else if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n return node\n}\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function(exprList, isBinding) {\n let end = exprList.length\n for (let i = 0; i < end; i++) {\n let elt = exprList[i]\n if (elt) this.toAssignable(elt, isBinding)\n }\n if (end) {\n let last = exprList[end - 1]\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n this.unexpected(last.argument.start)\n }\n return exprList\n}\n\n// Parses spread element.\n\npp.parseSpread = function(refDestructuringErrors) {\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n return this.finishNode(node, \"SpreadElement\")\n}\n\npp.parseRestBinding = function() {\n let node = this.startNode()\n this.next()\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== tt.name)\n this.unexpected()\n\n node.argument = this.parseBindingAtom()\n\n return this.finishNode(node, \"RestElement\")\n}\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case tt.bracketL:\n let node = this.startNode()\n this.next()\n node.elements = this.parseBindingList(tt.bracketR, true, true)\n return this.finishNode(node, \"ArrayPattern\")\n\n case tt.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n}\n\npp.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (first) first = false\n else this.expect(tt.comma)\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null)\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === tt.ellipsis) {\n let rest = this.parseRestBinding()\n this.parseBindingListItem(rest)\n elts.push(rest)\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n this.expect(close)\n break\n } else {\n let elem = this.parseMaybeDefault(this.start, this.startLoc)\n this.parseBindingListItem(elem)\n elts.push(elem)\n }\n }\n return elts\n}\n\npp.parseBindingListItem = function(param) {\n return param\n}\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom()\n if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.right = this.parseMaybeAssign()\n return this.finishNode(node, \"AssignmentPattern\")\n}\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp.checkLVal = function(expr, bindingType = BIND_NONE, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\")\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n this.raiseRecoverable(expr.start, \"Argument name clash\")\n checkClashes[expr.name] = true\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) this.declareName(expr.name, bindingType, expr.start)\n break\n\n case \"MemberExpression\":\n if (bindingType) this.raiseRecoverable(expr.start, \"Binding member expression\")\n break\n\n case \"ObjectPattern\":\n for (let prop of expr.properties)\n this.checkLVal(prop, bindingType, checkClashes)\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes)\n break\n\n case \"ArrayPattern\":\n for (let elem of expr.elements) {\n if (elem) this.checkLVal(elem, bindingType, checkClashes)\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes)\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes)\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes)\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\")\n }\n}\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {lineBreak} from \"./whitespace\"\nimport {functionFlags, SCOPE_ARROW, SCOPE_SUPER, SCOPE_DIRECT_SUPER, BIND_OUTSIDE, BIND_VAR} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n return\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n return\n let {key} = prop, name\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n let {kind} = prop\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) refDestructuringErrors.doubleProto = key.start\n // Backwards-compat kludge. Can be removed in version 6.0\n else this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\")\n }\n propHash.proto = true\n }\n return\n }\n name = \"$\" + name\n let other = propHash[name]\n if (other) {\n let redefinition\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set\n } else {\n redefinition = other.init || other[kind]\n }\n if (redefinition)\n this.raiseRecoverable(key.start, \"Redefinition of property\")\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n }\n }\n other[kind] = true\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeAssign(noIn, refDestructuringErrors)\n if (this.type === tt.comma) {\n let node = this.startNodeAt(startPos, startLoc)\n node.expressions = [expr]\n while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors))\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) return this.parseYield(noIn)\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else this.exprAllowed = false\n }\n\n let ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldShorthandAssign = -1\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign\n oldTrailingComma = refDestructuringErrors.trailingComma\n oldShorthandAssign = refDestructuringErrors.shorthandAssign\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1\n } else {\n refDestructuringErrors = new DestructuringErrors\n ownDestructuringErrors = true\n }\n\n let startPos = this.start, startLoc = this.startLoc\n if (this.type === tt.parenL || this.type === tt.name)\n this.potentialArrowAt = this.start\n let left = this.parseMaybeConditional(noIn, refDestructuringErrors)\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)\n if (this.type.isAssign) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.left = this.type === tt.eq ? this.toAssignable(left, false, refDestructuringErrors) : left\n if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)\n refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly\n this.checkLVal(left)\n this.next()\n node.right = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign\n if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma\n if (oldShorthandAssign > -1) refDestructuringErrors.shorthandAssign = oldShorthandAssign\n return left\n}\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprOps(noIn, refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n if (this.eat(tt.question)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.test = expr\n node.consequent = this.parseMaybeAssign()\n this.expect(tt.colon)\n node.alternate = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n}\n\n// Start the precedence parser.\n\npp.parseExprOps = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeUnary(refDestructuringErrors, false)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n let prec = this.type.binop\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n let logical = this.type === tt.logicalOR || this.type === tt.logicalAND\n let op = this.value\n this.next()\n let startPos = this.start, startLoc = this.startLoc\n let right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)\n let node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n}\n\npp.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.operator = op\n node.right = right\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n}\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n let startPos = this.start, startLoc = this.startLoc, expr\n if (this.isContextual(\"await\") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {\n expr = this.parseAwait()\n sawUnary = true\n } else if (this.type.prefix) {\n let node = this.startNode(), update = this.type === tt.incDec\n node.operator = this.value\n node.prefix = true\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n this.checkExpressionErrors(refDestructuringErrors, true)\n if (update) this.checkLVal(node.argument)\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\")\n else sawUnary = true\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\")\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n while (this.type.postfix && !this.canInsertSemicolon()) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.prefix = false\n node.argument = expr\n this.checkLVal(expr)\n this.next()\n expr = this.finishNode(node, \"UpdateExpression\")\n }\n }\n\n if (!sawUnary && this.eat(tt.starstar))\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false)\n else\n return expr\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function(refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprAtom(refDestructuringErrors)\n let skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\"\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr\n let result = this.parseSubscripts(expr, startPos, startLoc)\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1\n if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1\n }\n return result\n}\n\npp.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\"\n for (let computed;;) {\n if ((computed = this.eat(tt.bracketL)) || this.eat(tt.dot)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.object = base\n node.property = computed ? this.parseExpression() : this.parseIdent(true)\n node.computed = !!computed\n if (computed) this.expect(tt.bracketR)\n base = this.finishNode(node, \"MemberExpression\")\n } else if (!noCalls && this.eat(tt.parenL)) {\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n this.yieldPos = 0\n this.awaitPos = 0\n let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors)\n if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)\n }\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n let node = this.startNodeAt(startPos, startLoc)\n node.callee = base\n node.arguments = exprList\n base = this.finishNode(node, \"CallExpression\")\n } else if (this.type === tt.backQuote) {\n let node = this.startNodeAt(startPos, startLoc)\n node.tag = base\n node.quasi = this.parseTemplate({isTagged: true})\n base = this.finishNode(node, \"TaggedTemplateExpression\")\n } else {\n return base\n }\n }\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function(refDestructuringErrors) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === tt.slash) this.readRegexp()\n\n let node, canBeArrow = this.potentialArrowAt === this.start\n switch (this.type) {\n case tt._super:\n if (!this.allowSuper)\n this.raise(this.start, \"'super' keyword outside a method\")\n node = this.startNode()\n this.next()\n if (this.type === tt.parenL && !this.allowDirectSuper)\n this.raise(node.start, \"super() call outside constructor of a subclass\")\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== tt.dot && this.type !== tt.bracketL && this.type !== tt.parenL)\n this.unexpected()\n return this.finishNode(node, \"Super\")\n\n case tt._this:\n node = this.startNode()\n this.next()\n return this.finishNode(node, \"ThisExpression\")\n\n case tt.name:\n let startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc\n let id = this.parseIdent(this.type !== tt.name)\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(tt._function))\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true)\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(tt.arrow))\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === tt.name && !containsEsc) {\n id = this.parseIdent()\n if (this.canInsertSemicolon() || !this.eat(tt.arrow))\n this.unexpected()\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case tt.regexp:\n let value = this.value\n node = this.parseLiteral(value.value)\n node.regex = {pattern: value.pattern, flags: value.flags}\n return node\n\n case tt.num: case tt.string:\n return this.parseLiteral(this.value)\n\n case tt._null: case tt._true: case tt._false:\n node = this.startNode()\n node.value = this.type === tt._null ? null : this.type === tt._true\n node.raw = this.type.keyword\n this.next()\n return this.finishNode(node, \"Literal\")\n\n case tt.parenL:\n let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n refDestructuringErrors.parenthesizedAssign = start\n if (refDestructuringErrors.parenthesizedBind < 0)\n refDestructuringErrors.parenthesizedBind = start\n }\n return expr\n\n case tt.bracketL:\n node = this.startNode()\n this.next()\n node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)\n return this.finishNode(node, \"ArrayExpression\")\n\n case tt.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case tt._function:\n node = this.startNode()\n this.next()\n return this.parseFunction(node, 0)\n\n case tt._class:\n return this.parseClass(this.startNode(), false)\n\n case tt._new:\n return this.parseNew()\n\n case tt.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected()\n }\n}\n\npp.parseLiteral = function(value) {\n let node = this.startNode()\n node.value = value\n node.raw = this.input.slice(this.start, this.end)\n this.next()\n return this.finishNode(node, \"Literal\")\n}\n\npp.parseParenExpression = function() {\n this.expect(tt.parenL)\n let val = this.parseExpression()\n this.expect(tt.parenR)\n return val\n}\n\npp.parseParenAndDistinguishExpression = function(canBeArrow) {\n let startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8\n if (this.options.ecmaVersion >= 6) {\n this.next()\n\n let innerStartPos = this.start, innerStartLoc = this.startLoc\n let exprList = [], first = true, lastIsComma = false\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart\n this.yieldPos = 0\n this.awaitPos = 0\n while (this.type !== tt.parenR) {\n first ? first = false : this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(tt.parenR, true)) {\n lastIsComma = true\n break\n } else if (this.type === tt.ellipsis) {\n spreadStart = this.start\n exprList.push(this.parseParenItem(this.parseRestBinding()))\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem))\n }\n }\n let innerEndPos = this.start, innerEndLoc = this.startLoc\n this.expect(tt.parenR)\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)\n if (spreadStart) this.unexpected(spreadStart)\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc)\n val.expressions = exprList\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc)\n } else {\n val = exprList[0]\n }\n } else {\n val = this.parseParenExpression()\n }\n\n if (this.options.preserveParens) {\n let par = this.startNodeAt(startPos, startLoc)\n par.expression = val\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n}\n\npp.parseParenItem = function(item) {\n return item\n}\n\npp.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nconst empty = []\n\npp.parseNew = function() {\n let node = this.startNode()\n let meta = this.parseIdent(true)\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta\n let containsEsc = this.containsEsc\n node.property = this.parseIdent(true)\n if (node.property.name !== \"target\" || containsEsc)\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\")\n if (!this.inNonArrowFunction())\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\")\n return this.finishNode(node, \"MetaProperty\")\n }\n let startPos = this.start, startLoc = this.startLoc\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)\n else node.arguments = empty\n return this.finishNode(node, \"NewExpression\")\n}\n\n// Parse template expression.\n\npp.parseTemplateElement = function({isTagged}) {\n let elem = this.startNode()\n if (this.type === tt.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\")\n }\n elem.value = {\n raw: this.value,\n cooked: null\n }\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n }\n }\n this.next()\n elem.tail = this.type === tt.backQuote\n return this.finishNode(elem, \"TemplateElement\")\n}\n\npp.parseTemplate = function({isTagged = false} = {}) {\n let node = this.startNode()\n this.next()\n node.expressions = []\n let curElt = this.parseTemplateElement({isTagged})\n node.quasis = [curElt]\n while (!curElt.tail) {\n if (this.type === tt.eof) this.raise(this.pos, \"Unterminated template literal\")\n this.expect(tt.dollarBraceL)\n node.expressions.push(this.parseExpression())\n this.expect(tt.braceR)\n node.quasis.push(curElt = this.parseTemplateElement({isTagged}))\n }\n this.next()\n return this.finishNode(node, \"TemplateLiteral\")\n}\n\npp.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === tt.name || this.type === tt.num || this.type === tt.string || this.type === tt.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === tt.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n const prop = this.parseProperty(isPattern, refDestructuringErrors)\n if (!isPattern) this.checkPropClash(prop, propHash, refDestructuringErrors)\n node.properties.push(prop)\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n}\n\npp.parseProperty = function(isPattern, refDestructuringErrors) {\n let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this.options.ecmaVersion >= 9 && this.eat(tt.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false)\n if (this.type === tt.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\")\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === tt.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === tt.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this.start\n startLoc = this.startLoc\n }\n if (!isPattern)\n isGenerator = this.eat(tt.star)\n }\n let containsEsc = this.containsEsc\n this.parsePropertyName(prop)\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n this.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc)\n return this.finishNode(prop, \"Property\")\n}\n\npp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === tt.colon)\n this.unexpected()\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)\n prop.kind = \"init\"\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected()\n prop.kind = \"init\"\n prop.method = true\n prop.value = this.parseMethod(isGenerator, isAsync)\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== tt.comma && this.type !== tt.braceR)) {\n if (isGenerator || isAsync) this.unexpected()\n prop.kind = prop.key.name\n this.parsePropertyName(prop)\n prop.value = this.parseMethod(false)\n let paramCount = prop.kind === \"get\" ? 0 : 1\n if (prop.value.params.length !== paramCount) {\n let start = prop.value.start\n if (prop.kind === \"get\")\n this.raiseRecoverable(start, \"getter should have no params\")\n else\n this.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\")\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n this.checkUnreserved(prop.key)\n prop.kind = \"init\"\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else if (this.type === tt.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n refDestructuringErrors.shorthandAssign = this.start\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else {\n prop.value = prop.key\n }\n prop.shorthand = true\n } else this.unexpected()\n}\n\npp.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true\n prop.key = this.parseMaybeAssign()\n this.expect(tt.bracketR)\n return prop.key\n } else {\n prop.computed = false\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)\n}\n\n// Initialize empty function node.\n\npp.initFunction = function(node) {\n node.id = null\n if (this.options.ecmaVersion >= 6) node.generator = node.expression = false\n if (this.options.ecmaVersion >= 8) node.async = false\n}\n\n// Parse object or class method.\n\npp.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n let node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6)\n node.generator = isGenerator\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0))\n\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n this.parseFunctionBody(node, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, \"FunctionExpression\")\n}\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function(node, params, isAsync) {\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW)\n this.initFunction(node)\n if (this.options.ecmaVersion >= 8) node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n\n node.params = this.toAssignableList(params, true)\n this.parseFunctionBody(node, true)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.finishNode(node, \"ArrowFunctionExpression\")\n}\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function(node, isArrowFunction) {\n let isExpression = isArrowFunction && this.type !== tt.braceL\n let oldStrict = this.strict, useStrict = false\n\n if (isExpression) {\n node.body = this.parseMaybeAssign()\n node.expression = true\n this.checkParams(node, false)\n } else {\n let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end)\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\")\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n let oldLabels = this.labels\n this.labels = []\n if (useStrict) this.strict = true\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))\n node.body = this.parseBlock(false)\n node.expression = false\n this.adaptDirectivePrologue(node.body.body)\n this.labels = oldLabels\n }\n this.exitScope()\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) this.checkLVal(node.id, BIND_OUTSIDE)\n this.strict = oldStrict\n}\n\npp.isSimpleParamList = function(params) {\n for (let param of params)\n if (param.type !== \"Identifier\") return false\n return true\n}\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp.checkParams = function(node, allowDuplicates) {\n let nameHash = {}\n for (let param of node.params)\n this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash)\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (!first) {\n this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(close)) break\n } else first = false\n\n let elt\n if (allowEmpty && this.type === tt.comma)\n elt = null\n else if (this.type === tt.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors)\n if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0)\n refDestructuringErrors.trailingComma = this.start\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors)\n }\n elts.push(elt)\n }\n return elts\n}\n\npp.checkUnreserved = function({start, end, name}) {\n if (this.inGenerator && name === \"yield\")\n this.raiseRecoverable(start, \"Can not use 'yield' as identifier inside a generator\")\n if (this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Can not use 'await' as identifier inside an async function\")\n if (this.keywords.test(name))\n this.raise(start, `Unexpected keyword '${name}'`)\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) return\n const re = this.strict ? this.reservedWordsStrict : this.reservedWords\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Can not use keyword 'await' outside an async function\")\n this.raiseRecoverable(start, `The keyword '${name}' is reserved`)\n }\n}\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function(liberal, isBinding) {\n let node = this.startNode()\n if (liberal && this.options.allowReserved === \"never\") liberal = false\n if (this.type === tt.name) {\n node.name = this.value\n } else if (this.type.keyword) {\n node.name = this.type.keyword\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop()\n }\n } else {\n this.unexpected()\n }\n this.next()\n this.finishNode(node, \"Identifier\")\n if (!liberal) this.checkUnreserved(node)\n return node\n}\n\n// Parses yield expression inside generator.\n\npp.parseYield = function(noIn) {\n if (!this.yieldPos) this.yieldPos = this.start\n\n let node = this.startNode()\n this.next()\n if (this.type === tt.semi || this.canInsertSemicolon() || (this.type !== tt.star && !this.type.startsExpr)) {\n node.delegate = false\n node.argument = null\n } else {\n node.delegate = this.eat(tt.star)\n node.argument = this.parseMaybeAssign(noIn)\n }\n return this.finishNode(node, \"YieldExpression\")\n}\n\npp.parseAwait = function() {\n if (!this.awaitPos) this.awaitPos = this.start\n\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n return this.finishNode(node, \"AwaitExpression\")\n}\n","import {Parser} from \"./state\"\nimport {Position, getLineInfo} from \"./locutil\"\n\nconst pp = Parser.prototype\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function(pos, message) {\n let loc = getLineInfo(this.input, pos)\n message += \" (\" + loc.line + \":\" + loc.column + \")\"\n let err = new SyntaxError(message)\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos\n throw err\n}\n\npp.raiseRecoverable = pp.raise\n\npp.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n}\n","import {Parser} from \"./state\"\nimport {SCOPE_VAR, SCOPE_FUNCTION, SCOPE_TOP, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, BIND_LEXICAL, BIND_SIMPLE_CATCH, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\nclass Scope {\n constructor(flags) {\n this.flags = flags\n // A list of var-declared names in the current lexical scope\n this.var = []\n // A list of lexically-declared names in the current lexical scope\n this.lexical = []\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = []\n }\n}\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags))\n}\n\npp.exitScope = function() {\n this.scopeStack.pop()\n}\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP);\n}\n\npp.declareName = function(name, bindingType, pos) {\n let redeclared = false\n if (bindingType === BIND_LEXICAL) {\n const scope = this.currentScope()\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.lexical.push(name)\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n const scope = this.currentScope()\n scope.lexical.push(name)\n } else if (bindingType === BIND_FUNCTION) {\n const scope = this.currentScope()\n if (this.treatFunctionsAsVar)\n redeclared = scope.lexical.indexOf(name) > -1;\n else\n redeclared = scope.lexical.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.functions.push(name)\n } else {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n const scope = this.scopeStack[i]\n if (scope.lexical.indexOf(name) > -1 && !(scope.flags & SCOPE_SIMPLE_CATCH) && scope.lexical[0] === name ||\n !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1) {\n redeclared = true\n break\n }\n scope.var.push(name)\n if (scope.flags & SCOPE_VAR) break\n }\n }\n if (redeclared) this.raiseRecoverable(pos, `Identifier '${name}' has already been declared`)\n}\n\npp.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n}\n\npp.currentVarScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR) return scope\n }\n}\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp.currentThisScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) return scope\n }\n}\n","import {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\n\nexport class Node {\n constructor(parser, pos, loc) {\n this.type = \"\"\n this.start = pos\n this.end = 0\n if (parser.options.locations)\n this.loc = new SourceLocation(parser, loc)\n if (parser.options.directSourceFile)\n this.sourceFile = parser.options.directSourceFile\n if (parser.options.ranges)\n this.range = [pos, 0]\n }\n}\n\n// Start an AST node, attaching a start offset.\n\nconst pp = Parser.prototype\n\npp.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n}\n\npp.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n}\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type\n node.end = pos\n if (this.options.locations)\n node.loc.end = loc\n if (this.options.ranges)\n node.range[1] = pos\n return node\n}\n\npp.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n}\n\n// Finish node at given position\n\npp.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n}\n","// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport {Parser} from \"./state\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\n\nexport class TokContext {\n constructor(token, isExpr, preserveSpace, override, generator) {\n this.token = token\n this.isExpr = !!isExpr\n this.preserveSpace = !!preserveSpace\n this.override = override\n this.generator = !!generator\n }\n}\n\nexport const types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, p => p.tryReadTemplateToken()),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n}\n\nconst pp = Parser.prototype\n\npp.initialContext = function() {\n return [types.b_stat]\n}\n\npp.braceIsBlock = function(prevType) {\n let parent = this.curContext()\n if (parent === types.f_expr || parent === types.f_stat)\n return true\n if (prevType === tt.colon && (parent === types.b_stat || parent === types.b_expr))\n return !parent.isExpr\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === tt._return || prevType === tt.name && this.exprAllowed)\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType === tt.arrow)\n return true\n if (prevType === tt.braceL)\n return parent === types.b_stat\n if (prevType === tt._var || prevType === tt._const || prevType === tt.name)\n return false\n return !this.exprAllowed\n}\n\npp.inGeneratorContext = function() {\n for (let i = this.context.length - 1; i >= 1; i--) {\n let context = this.context[i]\n if (context.token === \"function\")\n return context.generator\n }\n return false\n}\n\npp.updateContext = function(prevType) {\n let update, type = this.type\n if (type.keyword && prevType === tt.dot)\n this.exprAllowed = false\n else if (update = type.updateContext)\n update.call(this, prevType)\n else\n this.exprAllowed = type.beforeExpr\n}\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true\n return\n }\n let out = this.context.pop()\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop()\n }\n this.exprAllowed = !out.isExpr\n}\n\ntt.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)\n this.exprAllowed = true\n}\n\ntt.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl)\n this.exprAllowed = true\n}\n\ntt.parenL.updateContext = function(prevType) {\n let statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while\n this.context.push(statementParens ? types.p_stat : types.p_expr)\n this.exprAllowed = true\n}\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n}\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&\n !(prevType === tt._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))\n this.context.push(types.f_expr)\n else\n this.context.push(types.f_stat)\n this.exprAllowed = false\n}\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n this.context.pop()\n else\n this.context.push(types.q_tmpl)\n this.exprAllowed = false\n}\n\ntt.star.updateContext = function(prevType) {\n if (prevType === tt._function) {\n let index = this.context.length - 1\n if (this.context[index] === types.f_expr)\n this.context[index] = types.f_expr_gen\n else\n this.context[index] = types.f_gen\n }\n this.exprAllowed = true\n}\n\ntt.name.updateContext = function(prevType) {\n let allowed = false\n if (this.options.ecmaVersion >= 6 && prevType !== tt.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n allowed = true\n }\n this.exprAllowed = allowed\n}\n","const data = {\n \"$LONE\": [\n \"ASCII\",\n \"ASCII_Hex_Digit\",\n \"AHex\",\n \"Alphabetic\",\n \"Alpha\",\n \"Any\",\n \"Assigned\",\n \"Bidi_Control\",\n \"Bidi_C\",\n \"Bidi_Mirrored\",\n \"Bidi_M\",\n \"Case_Ignorable\",\n \"CI\",\n \"Cased\",\n \"Changes_When_Casefolded\",\n \"CWCF\",\n \"Changes_When_Casemapped\",\n \"CWCM\",\n \"Changes_When_Lowercased\",\n \"CWL\",\n \"Changes_When_NFKC_Casefolded\",\n \"CWKCF\",\n \"Changes_When_Titlecased\",\n \"CWT\",\n \"Changes_When_Uppercased\",\n \"CWU\",\n \"Dash\",\n \"Default_Ignorable_Code_Point\",\n \"DI\",\n \"Deprecated\",\n \"Dep\",\n \"Diacritic\",\n \"Dia\",\n \"Emoji\",\n \"Emoji_Component\",\n \"Emoji_Modifier\",\n \"Emoji_Modifier_Base\",\n \"Emoji_Presentation\",\n \"Extender\",\n \"Ext\",\n \"Grapheme_Base\",\n \"Gr_Base\",\n \"Grapheme_Extend\",\n \"Gr_Ext\",\n \"Hex_Digit\",\n \"Hex\",\n \"IDS_Binary_Operator\",\n \"IDSB\",\n \"IDS_Trinary_Operator\",\n \"IDST\",\n \"ID_Continue\",\n \"IDC\",\n \"ID_Start\",\n \"IDS\",\n \"Ideographic\",\n \"Ideo\",\n \"Join_Control\",\n \"Join_C\",\n \"Logical_Order_Exception\",\n \"LOE\",\n \"Lowercase\",\n \"Lower\",\n \"Math\",\n \"Noncharacter_Code_Point\",\n \"NChar\",\n \"Pattern_Syntax\",\n \"Pat_Syn\",\n \"Pattern_White_Space\",\n \"Pat_WS\",\n \"Quotation_Mark\",\n \"QMark\",\n \"Radical\",\n \"Regional_Indicator\",\n \"RI\",\n \"Sentence_Terminal\",\n \"STerm\",\n \"Soft_Dotted\",\n \"SD\",\n \"Terminal_Punctuation\",\n \"Term\",\n \"Unified_Ideograph\",\n \"UIdeo\",\n \"Uppercase\",\n \"Upper\",\n \"Variation_Selector\",\n \"VS\",\n \"White_Space\",\n \"space\",\n \"XID_Continue\",\n \"XIDC\",\n \"XID_Start\",\n \"XIDS\"\n ],\n \"General_Category\": [\n \"Cased_Letter\",\n \"LC\",\n \"Close_Punctuation\",\n \"Pe\",\n \"Connector_Punctuation\",\n \"Pc\",\n \"Control\",\n \"Cc\",\n \"cntrl\",\n \"Currency_Symbol\",\n \"Sc\",\n \"Dash_Punctuation\",\n \"Pd\",\n \"Decimal_Number\",\n \"Nd\",\n \"digit\",\n \"Enclosing_Mark\",\n \"Me\",\n \"Final_Punctuation\",\n \"Pf\",\n \"Format\",\n \"Cf\",\n \"Initial_Punctuation\",\n \"Pi\",\n \"Letter\",\n \"L\",\n \"Letter_Number\",\n \"Nl\",\n \"Line_Separator\",\n \"Zl\",\n \"Lowercase_Letter\",\n \"Ll\",\n \"Mark\",\n \"M\",\n \"Combining_Mark\",\n \"Math_Symbol\",\n \"Sm\",\n \"Modifier_Letter\",\n \"Lm\",\n \"Modifier_Symbol\",\n \"Sk\",\n \"Nonspacing_Mark\",\n \"Mn\",\n \"Number\",\n \"N\",\n \"Open_Punctuation\",\n \"Ps\",\n \"Other\",\n \"C\",\n \"Other_Letter\",\n \"Lo\",\n \"Other_Number\",\n \"No\",\n \"Other_Punctuation\",\n \"Po\",\n \"Other_Symbol\",\n \"So\",\n \"Paragraph_Separator\",\n \"Zp\",\n \"Private_Use\",\n \"Co\",\n \"Punctuation\",\n \"P\",\n \"punct\",\n \"Separator\",\n \"Z\",\n \"Space_Separator\",\n \"Zs\",\n \"Spacing_Mark\",\n \"Mc\",\n \"Surrogate\",\n \"Cs\",\n \"Symbol\",\n \"S\",\n \"Titlecase_Letter\",\n \"Lt\",\n \"Unassigned\",\n \"Cn\",\n \"Uppercase_Letter\",\n \"Lu\"\n ],\n \"Script\": [\n \"Adlam\",\n \"Adlm\",\n \"Ahom\",\n \"Anatolian_Hieroglyphs\",\n \"Hluw\",\n \"Arabic\",\n \"Arab\",\n \"Armenian\",\n \"Armn\",\n \"Avestan\",\n \"Avst\",\n \"Balinese\",\n \"Bali\",\n \"Bamum\",\n \"Bamu\",\n \"Bassa_Vah\",\n \"Bass\",\n \"Batak\",\n \"Batk\",\n \"Bengali\",\n \"Beng\",\n \"Bhaiksuki\",\n \"Bhks\",\n \"Bopomofo\",\n \"Bopo\",\n \"Brahmi\",\n \"Brah\",\n \"Braille\",\n \"Brai\",\n \"Buginese\",\n \"Bugi\",\n \"Buhid\",\n \"Buhd\",\n \"Canadian_Aboriginal\",\n \"Cans\",\n \"Carian\",\n \"Cari\",\n \"Caucasian_Albanian\",\n \"Aghb\",\n \"Chakma\",\n \"Cakm\",\n \"Cham\",\n \"Cherokee\",\n \"Cher\",\n \"Common\",\n \"Zyyy\",\n \"Coptic\",\n \"Copt\",\n \"Qaac\",\n \"Cuneiform\",\n \"Xsux\",\n \"Cypriot\",\n \"Cprt\",\n \"Cyrillic\",\n \"Cyrl\",\n \"Deseret\",\n \"Dsrt\",\n \"Devanagari\",\n \"Deva\",\n \"Duployan\",\n \"Dupl\",\n \"Egyptian_Hieroglyphs\",\n \"Egyp\",\n \"Elbasan\",\n \"Elba\",\n \"Ethiopic\",\n \"Ethi\",\n \"Georgian\",\n \"Geor\",\n \"Glagolitic\",\n \"Glag\",\n \"Gothic\",\n \"Goth\",\n \"Grantha\",\n \"Gran\",\n \"Greek\",\n \"Grek\",\n \"Gujarati\",\n \"Gujr\",\n \"Gurmukhi\",\n \"Guru\",\n \"Han\",\n \"Hani\",\n \"Hangul\",\n \"Hang\",\n \"Hanunoo\",\n \"Hano\",\n \"Hatran\",\n \"Hatr\",\n \"Hebrew\",\n \"Hebr\",\n \"Hiragana\",\n \"Hira\",\n \"Imperial_Aramaic\",\n \"Armi\",\n \"Inherited\",\n \"Zinh\",\n \"Qaai\",\n \"Inscriptional_Pahlavi\",\n \"Phli\",\n \"Inscriptional_Parthian\",\n \"Prti\",\n \"Javanese\",\n \"Java\",\n \"Kaithi\",\n \"Kthi\",\n \"Kannada\",\n \"Knda\",\n \"Katakana\",\n \"Kana\",\n \"Kayah_Li\",\n \"Kali\",\n \"Kharoshthi\",\n \"Khar\",\n \"Khmer\",\n \"Khmr\",\n \"Khojki\",\n \"Khoj\",\n \"Khudawadi\",\n \"Sind\",\n \"Lao\",\n \"Laoo\",\n \"Latin\",\n \"Latn\",\n \"Lepcha\",\n \"Lepc\",\n \"Limbu\",\n \"Limb\",\n \"Linear_A\",\n \"Lina\",\n \"Linear_B\",\n \"Linb\",\n \"Lisu\",\n \"Lycian\",\n \"Lyci\",\n \"Lydian\",\n \"Lydi\",\n \"Mahajani\",\n \"Mahj\",\n \"Malayalam\",\n \"Mlym\",\n \"Mandaic\",\n \"Mand\",\n \"Manichaean\",\n \"Mani\",\n \"Marchen\",\n \"Marc\",\n \"Masaram_Gondi\",\n \"Gonm\",\n \"Meetei_Mayek\",\n \"Mtei\",\n \"Mende_Kikakui\",\n \"Mend\",\n \"Meroitic_Cursive\",\n \"Merc\",\n \"Meroitic_Hieroglyphs\",\n \"Mero\",\n \"Miao\",\n \"Plrd\",\n \"Modi\",\n \"Mongolian\",\n \"Mong\",\n \"Mro\",\n \"Mroo\",\n \"Multani\",\n \"Mult\",\n \"Myanmar\",\n \"Mymr\",\n \"Nabataean\",\n \"Nbat\",\n \"New_Tai_Lue\",\n \"Talu\",\n \"Newa\",\n \"Nko\",\n \"Nkoo\",\n \"Nushu\",\n \"Nshu\",\n \"Ogham\",\n \"Ogam\",\n \"Ol_Chiki\",\n \"Olck\",\n \"Old_Hungarian\",\n \"Hung\",\n \"Old_Italic\",\n \"Ital\",\n \"Old_North_Arabian\",\n \"Narb\",\n \"Old_Permic\",\n \"Perm\",\n \"Old_Persian\",\n \"Xpeo\",\n \"Old_South_Arabian\",\n \"Sarb\",\n \"Old_Turkic\",\n \"Orkh\",\n \"Oriya\",\n \"Orya\",\n \"Osage\",\n \"Osge\",\n \"Osmanya\",\n \"Osma\",\n \"Pahawh_Hmong\",\n \"Hmng\",\n \"Palmyrene\",\n \"Palm\",\n \"Pau_Cin_Hau\",\n \"Pauc\",\n \"Phags_Pa\",\n \"Phag\",\n \"Phoenician\",\n \"Phnx\",\n \"Psalter_Pahlavi\",\n \"Phlp\",\n \"Rejang\",\n \"Rjng\",\n \"Runic\",\n \"Runr\",\n \"Samaritan\",\n \"Samr\",\n \"Saurashtra\",\n \"Saur\",\n \"Sharada\",\n \"Shrd\",\n \"Shavian\",\n \"Shaw\",\n \"Siddham\",\n \"Sidd\",\n \"SignWriting\",\n \"Sgnw\",\n \"Sinhala\",\n \"Sinh\",\n \"Sora_Sompeng\",\n \"Sora\",\n \"Soyombo\",\n \"Soyo\",\n \"Sundanese\",\n \"Sund\",\n \"Syloti_Nagri\",\n \"Sylo\",\n \"Syriac\",\n \"Syrc\",\n \"Tagalog\",\n \"Tglg\",\n \"Tagbanwa\",\n \"Tagb\",\n \"Tai_Le\",\n \"Tale\",\n \"Tai_Tham\",\n \"Lana\",\n \"Tai_Viet\",\n \"Tavt\",\n \"Takri\",\n \"Takr\",\n \"Tamil\",\n \"Taml\",\n \"Tangut\",\n \"Tang\",\n \"Telugu\",\n \"Telu\",\n \"Thaana\",\n \"Thaa\",\n \"Thai\",\n \"Tibetan\",\n \"Tibt\",\n \"Tifinagh\",\n \"Tfng\",\n \"Tirhuta\",\n \"Tirh\",\n \"Ugaritic\",\n \"Ugar\",\n \"Vai\",\n \"Vaii\",\n \"Warang_Citi\",\n \"Wara\",\n \"Yi\",\n \"Yiii\",\n \"Zanabazar_Square\",\n \"Zanb\"\n ]\n}\nArray.prototype.push.apply(data.$LONE, data.General_Category)\ndata.gc = data.General_Category\ndata.sc = data.Script_Extensions = data.scx = data.Script\n\nexport default data\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier.js\"\nimport {Parser} from \"./state.js\"\nimport UNICODE_PROPERTY_VALUES from \"./unicode-property-data.js\"\n\nconst pp = Parser.prototype\n\nexport class RegExpValidationState {\n constructor(parser) {\n this.parser = parser\n this.validFlags = `gim${parser.options.ecmaVersion >= 6 ? \"uy\" : \"\"}${parser.options.ecmaVersion >= 9 ? \"s\" : \"\"}`\n this.source = \"\"\n this.flags = \"\"\n this.start = 0\n this.switchU = false\n this.switchN = false\n this.pos = 0\n this.lastIntValue = 0\n this.lastStringValue = \"\"\n this.lastAssertionIsQuantifiable = false\n this.numCapturingParens = 0\n this.maxBackReference = 0\n this.groupNames = []\n this.backReferenceNames = []\n }\n\n reset(start, pattern, flags) {\n const unicode = flags.indexOf(\"u\") !== -1\n this.start = start | 0\n this.source = pattern + \"\"\n this.flags = flags\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9\n }\n\n raise(message) {\n this.parser.raiseRecoverable(this.start, `Invalid regular expression: /${this.source}/: ${message}`)\n }\n\n // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n at(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return -1\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n }\n\n nextIndex(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return l\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n }\n\n current() {\n return this.at(this.pos)\n }\n\n lookahead() {\n return this.at(this.nextIndex(this.pos))\n }\n\n advance() {\n this.pos = this.nextIndex(this.pos)\n }\n\n eat(ch) {\n if (this.current() === ch) {\n this.advance()\n return true\n }\n return false\n }\n}\n\nfunction codePointToString(ch) {\n if (ch <= 0xFFFF) return String.fromCharCode(ch)\n ch -= 0x10000\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpFlags = function(state) {\n const validFlags = state.validFlags\n const flags = state.flags\n\n for (let i = 0; i < flags.length; i++) {\n const flag = flags.charAt(i)\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\")\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\")\n }\n }\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpPattern = function(state) {\n this.regexp_pattern(state)\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true\n this.regexp_pattern(state)\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp.regexp_pattern = function(state) {\n state.pos = 0\n state.lastIntValue = 0\n state.lastStringValue = \"\"\n state.lastAssertionIsQuantifiable = false\n state.numCapturingParens = 0\n state.maxBackReference = 0\n state.groupNames.length = 0\n state.backReferenceNames.length = 0\n\n this.regexp_disjunction(state)\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\")\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\")\n }\n for (const name of state.backReferenceNames) {\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\")\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp.regexp_disjunction = function(state) {\n this.regexp_alternative(state)\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state)\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n ;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\")\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state)\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp.regexp_eatAssertion = function(state) {\n const start = state.pos\n state.lastAssertionIsQuantifiable = false\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n let lookbehind = false\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */)\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state)\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\")\n }\n state.lastAssertionIsQuantifiable = !lookbehind\n return true\n }\n }\n\n state.pos = start\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp.regexp_eatQuantifier = function(state, noError = false) {\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n}\npp.regexp_eatBracedQuantifier = function(state, noError) {\n const start = state.pos\n if (state.eat(0x7B /* { */)) {\n let min = 0, max = -1\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\")\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n}\npp.regexp_eatReverseSolidusAtomEscape = function(state) {\n const start = state.pos\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatUncapturingGroup = function(state) {\n const start = state.pos\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\")\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state)\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\")\n }\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1\n return true\n }\n state.raise(\"Unterminated group\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp.regexp_eatSyntaxCharacter = function(state) {\n const ch = state.current()\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n return false\n}\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp.regexp_eatPatternCharacters = function(state) {\n const start = state.pos\n let ch = 0\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance()\n }\n return state.pos !== start\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp.regexp_eatExtendedPatternCharacter = function(state) {\n const ch = state.current()\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance()\n return true\n }\n return false\n}\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\")\n }\n state.groupNames.push(state.lastStringValue)\n return\n }\n state.raise(\"Invalid group\")\n }\n}\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\"\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\")\n }\n return false\n}\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\"\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n }\n return true\n }\n return false\n}\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp.regexp_eatRegExpIdentifierStart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// <ZWNJ>\n// <ZWJ>\npp.regexp_eatRegExpIdentifierPart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\")\n }\n state.raise(\"Invalid escape\")\n }\n return false\n}\npp.regexp_eatBackReference = function(state) {\n const start = state.pos\n if (this.regexp_eatDecimalEscape(state)) {\n const n = state.lastIntValue\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue)\n return true\n }\n state.raise(\"Invalid named reference\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n}\npp.regexp_eatCControlLetter = function(state) {\n const start = state.pos\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp.regexp_eatControlEscape = function(state) {\n const ch = state.current()\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09 /* \\t */\n state.advance()\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A /* \\n */\n state.advance()\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B /* \\v */\n state.advance()\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C /* \\f */\n state.advance()\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D /* \\r */\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp.regexp_eatControlLetter = function(state) {\n const ch = state.current()\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp.regexp_eatRegExpUnicodeEscapeSequence = function(state) {\n const start = state.pos\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n const lead = state.lastIntValue\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n const leadSurrogateEnd = state.pos\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n const trail = state.lastIntValue\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000\n return true\n }\n }\n state.pos = leadSurrogateEnd\n state.lastIntValue = lead\n }\n return true\n }\n if (\n state.switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\")\n }\n state.pos = start\n }\n\n return false\n}\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F /* / */\n return true\n }\n return false\n }\n\n const ch = state.current()\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0\n let ch = state.current()\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp.regexp_eatCharacterClassEscape = function(state) {\n const ch = state.current()\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1\n state.advance()\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1\n state.advance()\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\")\n }\n\n return false\n}\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp.regexp_eatUnicodePropertyValueExpression = function(state) {\n const start = state.pos\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n const name = state.lastStringValue\n if (this.regexp_eatUnicodePropertyValue(state)) {\n const value = state.lastStringValue\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value)\n return true\n }\n }\n state.pos = start\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n const nameOrValue = state.lastStringValue\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n return true\n }\n return false\n}\npp.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!UNICODE_PROPERTY_VALUES.hasOwnProperty(name) || UNICODE_PROPERTY_VALUES[name].indexOf(value) === -1) {\n state.raise(\"Invalid property name\")\n }\n}\npp.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (UNICODE_PROPERTY_VALUES.$LONE.indexOf(nameOrValue) === -1) {\n state.raise(\"Invalid property name\")\n }\n}\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp.regexp_eatUnicodePropertyName = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatUnicodePropertyValue = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */)\n this.regexp_classRanges(state)\n if (state.eat(0x5D /* [ */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp.regexp_classRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n const left = state.lastIntValue\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n const right = state.lastIntValue\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\")\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\")\n }\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp.regexp_eatClassAtom = function(state) {\n const start = state.pos\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n const ch = state.current()\n if (ch === 0x63 /* c */ || isOctalDigit(ch)) {\n state.raise(\"Invalid class escape\")\n }\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n\n const ch = state.current()\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp.regexp_eatClassEscape = function(state) {\n const start = state.pos\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08 /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp.regexp_eatClassControlLetter = function(state) {\n const ch = state.current()\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatHexEscapeSequence = function(state) {\n const start = state.pos\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp.regexp_eatDecimalDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp.regexp_eatHexDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n const n1 = state.lastIntValue\n if (this.regexp_eatOctalDigit(state)) {\n const n2 = state.lastIntValue\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue\n } else {\n state.lastIntValue = n1 * 8 + n2\n }\n } else {\n state.lastIntValue = n1\n }\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp.regexp_eatOctalDigit = function(state) {\n const ch = state.current()\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30 /* 0 */\n state.advance()\n return true\n }\n state.lastIntValue = 0\n return false\n}\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatFixedHexDigits = function(state, length) {\n const start = state.pos\n state.lastIntValue = 0\n for (let i = 0; i < length; ++i) {\n const ch = state.current()\n if (!isHexDigit(ch)) {\n state.pos = start\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return true\n}\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier\"\nimport {types as tt, keywords as keywordTypes} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\nimport {RegExpValidationState} from \"./regexp\"\nimport {lineBreak, lineBreakG, isNewLine, nonASCIIwhitespace} from \"./whitespace\"\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(p) {\n this.type = p.type\n this.value = p.value\n this.start = p.start\n this.end = p.end\n if (p.options.locations)\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc)\n if (p.options.ranges)\n this.range = [p.start, p.end]\n }\n}\n\n// ## Tokenizer\n\nconst pp = Parser.prototype\n\n// Move to the next token\n\npp.next = function() {\n if (this.options.onToken)\n this.options.onToken(new Token(this))\n\n this.lastTokEnd = this.end\n this.lastTokStart = this.start\n this.lastTokEndLoc = this.endLoc\n this.lastTokStartLoc = this.startLoc\n this.nextToken()\n}\n\npp.getToken = function() {\n this.next()\n return new Token(this)\n}\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n pp[Symbol.iterator] = function() {\n return {\n next: () => {\n let token = this.getToken()\n return {\n done: token.type === tt.eof,\n value: token\n }\n }\n }\n }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.curContext = function() {\n return this.context[this.context.length - 1]\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n let curContext = this.curContext()\n if (!curContext || !curContext.preserveSpace) this.skipSpace()\n\n this.start = this.pos\n if (this.options.locations) this.startLoc = this.curPosition()\n if (this.pos >= this.input.length) return this.finishToken(tt.eof)\n\n if (curContext.override) return curContext.override(this)\n else this.readToken(this.fullCharCodeAtPos())\n}\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n return this.readWord()\n\n return this.getTokenFromCode(code)\n}\n\npp.fullCharCodeAtPos = function() {\n let code = this.input.charCodeAt(this.pos)\n if (code <= 0xd7ff || code >= 0xe000) return code\n let next = this.input.charCodeAt(this.pos + 1)\n return (code << 10) + next - 0x35fdc00\n}\n\npp.skipBlockComment = function() {\n let startLoc = this.options.onComment && this.curPosition()\n let start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2)\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\")\n this.pos = end + 2\n if (this.options.locations) {\n lineBreakG.lastIndex = start\n let match\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine\n this.lineStart = match.index + match[0].length\n }\n }\n if (this.options.onComment)\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition())\n}\n\npp.skipLineComment = function(startSkip) {\n let start = this.pos\n let startLoc = this.options.onComment && this.curPosition()\n let ch = this.input.charCodeAt(this.pos += startSkip)\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos)\n }\n if (this.options.onComment)\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition())\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n let ch = this.input.charCodeAt(this.pos)\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos\n }\n case 10: case 8232: case 8233:\n ++this.pos\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment()\n break\n case 47:\n this.skipLineComment(2)\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos\n } else {\n break loop\n }\n }\n }\n}\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos\n if (this.options.locations) this.endLoc = this.curPosition()\n let prevType = this.type\n this.type = type\n this.value = val\n\n this.updateContext(prevType)\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n let next = this.input.charCodeAt(this.pos + 1)\n if (next >= 48 && next <= 57) return this.readNumber(true)\n let next2 = this.input.charCodeAt(this.pos + 2)\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3\n return this.finishToken(tt.ellipsis)\n } else {\n ++this.pos\n return this.finishToken(tt.dot)\n }\n}\n\npp.readToken_slash = function() { // '/'\n let next = this.input.charCodeAt(this.pos + 1)\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.slash, 1)\n}\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n let tokentype = code === 42 ? tt.star : tt.modulo\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size\n tokentype = tt.starstar\n next = this.input.charCodeAt(this.pos + 2)\n }\n\n if (next === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tokentype, size)\n}\n\npp.readToken_pipe_amp = function(code) { // '|&'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)\n}\n\npp.readToken_caret = function() { // '^'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.bitwiseXOR, 1)\n}\n\npp.readToken_plus_min = function(code) { // '+-'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4)\n this.skipSpace()\n return this.nextToken()\n }\n if (next === 61) size = 2\n return this.finishOp(tt.relational, size)\n}\n\npp.readToken_eq_excl = function(code) { // '=!'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2\n return this.finishToken(tt.arrow)\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)\n}\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(tt.parenL)\n case 41: ++this.pos; return this.finishToken(tt.parenR)\n case 59: ++this.pos; return this.finishToken(tt.semi)\n case 44: ++this.pos; return this.finishToken(tt.comma)\n case 91: ++this.pos; return this.finishToken(tt.bracketL)\n case 93: ++this.pos; return this.finishToken(tt.bracketR)\n case 123: ++this.pos; return this.finishToken(tt.braceL)\n case 125: ++this.pos; return this.finishToken(tt.braceR)\n case 58: ++this.pos; return this.finishToken(tt.colon)\n case 63: ++this.pos; return this.finishToken(tt.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) break\n ++this.pos\n return this.finishToken(tt.backQuote)\n\n case 48: // '0'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(tt.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\")\n}\n\npp.finishOp = function(type, size) {\n let str = this.input.slice(this.pos, this.pos + size)\n this.pos += size\n return this.finishToken(type, str)\n}\n\npp.readRegexp = function() {\n let escaped, inClass, start = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\")\n let ch = this.input.charAt(this.pos)\n if (lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\")\n if (!escaped) {\n if (ch === \"[\") inClass = true\n else if (ch === \"]\" && inClass) inClass = false\n else if (ch === \"/\" && !inClass) break\n escaped = ch === \"\\\\\"\n } else escaped = false\n ++this.pos\n }\n let pattern = this.input.slice(start, this.pos)\n ++this.pos\n let flagsStart = this.pos\n let flags = this.readWord1()\n if (this.containsEsc) this.unexpected(flagsStart)\n\n // Validate pattern\n const state = this.regexpState || (this.regexpState = new RegExpValidationState(this))\n state.reset(start, pattern, flags)\n this.validateRegExpFlags(state)\n this.validateRegExpPattern(state)\n\n // Create Literal#value property value.\n let value = null\n try {\n value = new RegExp(pattern, flags)\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(tt.regexp, {pattern, flags, value})\n}\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len) {\n let start = this.pos, total = 0\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n let code = this.input.charCodeAt(this.pos), val\n if (code >= 97) val = code - 97 + 10 // a\n else if (code >= 65) val = code - 65 + 10 // A\n else if (code >= 48 && code <= 57) val = code - 48 // 0-9\n else val = Infinity\n if (val >= radix) break\n ++this.pos\n total = total * radix + val\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null\n\n return total\n}\n\npp.readRadixNumber = function(radix) {\n this.pos += 2 // 0x\n let val = this.readInt(radix)\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix)\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n return this.finishToken(tt.num, val)\n}\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n let start = this.pos\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\")\n let octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48\n if (octal && this.strict) this.raise(start, \"Invalid number\")\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) octal = false\n let next = this.input.charCodeAt(this.pos)\n if (next === 46 && !octal) { // '.'\n ++this.pos\n this.readInt(10)\n next = this.input.charCodeAt(this.pos)\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos)\n if (next === 43 || next === 45) ++this.pos // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\")\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n\n let str = this.input.slice(start, this.pos)\n let val = octal ? parseInt(str, 8) : parseFloat(str)\n return this.finishToken(tt.num, val)\n}\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n let ch = this.input.charCodeAt(this.pos), code\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) this.unexpected()\n let codePos = ++this.pos\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos)\n ++this.pos\n if (code > 0x10FFFF) this.invalidStringToken(codePos, \"Code point out of bounds\")\n } else {\n code = this.readHexChar(4)\n }\n return code\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code)\n code -= 0x10000\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp.readString = function(quote) {\n let out = \"\", chunkStart = ++this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === quote) break\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(false)\n chunkStart = this.pos\n } else {\n if (isNewLine(ch, this.options.ecmaVersion >= 10)) this.raise(this.start, \"Unterminated string constant\")\n ++this.pos\n }\n }\n out += this.input.slice(chunkStart, this.pos++)\n return this.finishToken(tt.string, out)\n}\n\n// Reads template string tokens.\n\nconst INVALID_TEMPLATE_ESCAPE_ERROR = {}\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true\n try {\n this.readTmplToken()\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken()\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false\n}\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message)\n }\n}\n\npp.readTmplToken = function() {\n let out = \"\", chunkStart = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === tt.template || this.type === tt.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2\n return this.finishToken(tt.dollarBraceL)\n } else {\n ++this.pos\n return this.finishToken(tt.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos)\n return this.finishToken(tt.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(true)\n chunkStart = this.pos\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos)\n ++this.pos\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos\n case 10:\n out += \"\\n\"\n break\n default:\n out += String.fromCharCode(ch)\n break\n }\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n chunkStart = this.pos\n } else {\n ++this.pos\n }\n }\n}\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\")\n}\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n let ch = this.input.charCodeAt(++this.pos)\n ++this.pos\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n let octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]\n let octal = parseInt(octalStr, 8)\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1)\n octal = parseInt(octalStr, 8)\n }\n this.pos += octalStr.length - 1\n ch = this.input.charCodeAt(this.pos)\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n )\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n}\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n let codePos = this.pos\n let n = this.readInt(16, len)\n if (n === null) this.invalidStringToken(codePos, \"Bad character escape sequence\")\n return n\n}\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false\n let word = \"\", first = true, chunkStart = this.pos\n let astral = this.options.ecmaVersion >= 6\n while (this.pos < this.input.length) {\n let ch = this.fullCharCodeAtPos()\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true\n word += this.input.slice(chunkStart, this.pos)\n let escStart = this.pos\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\")\n ++this.pos\n let esc = this.readCodePoint()\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n this.invalidStringToken(escStart, \"Invalid Unicode escape\")\n word += codePointToString(esc)\n chunkStart = this.pos\n } else {\n break\n }\n first = false\n }\n return word + this.input.slice(chunkStart, this.pos)\n}\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n let word = this.readWord1()\n let type = tt.name\n if (this.keywords.test(word)) {\n if (this.containsEsc) this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word)\n type = keywordTypes[word]\n }\n return this.finishToken(type, word)\n}\n","// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\nimport {Parser} from \"./state\"\nimport \"./parseutil\"\nimport \"./statement\"\nimport \"./lval\"\nimport \"./expression\"\nimport \"./location\"\nimport \"./scope\"\n\nexport {Parser} from \"./state\"\nexport {defaultOptions} from \"./options\"\nexport {Position, SourceLocation, getLineInfo} from \"./locutil\"\nexport {Node} from \"./node\"\nexport {TokenType, types as tokTypes, keywords as keywordTypes} from \"./tokentype\"\nexport {TokContext, types as tokContexts} from \"./tokencontext\"\nexport {isIdentifierChar, isIdentifierStart} from \"./identifier\"\nexport {Token} from \"./tokenize\"\nexport {isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace} from \"./whitespace\"\n\nexport const version = \"6.0.6\"\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nexport function parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nexport function parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nexport function tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n"],"names":["const","let","keywords","tt","this","pp","init","label","node","empty","scope","types","codePointToString","UNICODE_PROPERTY_VALUES","ch","keywordTypes"],"mappings":"AAAA;;AAEA,AAAOA,IAAM,aAAa,GAAG;EAC3B,CAAC,EAAE,qNAAqN;EACxN,CAAC,EAAE,8CAA8C;EACjD,CAAC,EAAE,MAAM;EACT,MAAM,EAAE,wEAAwE;EAChF,UAAU,EAAE,gBAAgB;EAC7B;;;;AAIDA,IAAM,oBAAoB,GAAG,8KAA6K;;AAE1M,AAAOA,IAAM,QAAQ,GAAG;EACtB,CAAC,EAAE,oBAAoB;EACvB,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;EACrE;;AAED,AAAOA,IAAM,yBAAyB,GAAG,kBAAiB;;;;;;;;;;AAU1DC,IAAI,4BAA4B,GAAG,4tIAA2tI;AAC9vIA,IAAI,uBAAuB,GAAG,sjFAAqjF;;AAEnlFD,IAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,EAAC;AACpFA,IAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,EAAC;;AAEzG,4BAA4B,GAAG,uBAAuB,GAAG,KAAI;;;;;;;;;AAS7DA,IAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC;;;AAGvqCA,IAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CA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"} \ No newline at end of file
+{"version":3,"file":"acorn.mjs","sources":["../src/identifier.js","../src/tokentype.js","../src/whitespace.js","../src/util.js","../src/locutil.js","../src/options.js","../src/scopeflags.js","../src/state.js","../src/parseutil.js","../src/statement.js","../src/lval.js","../src/expression.js","../src/location.js","../src/scope.js","../src/node.js","../src/tokencontext.js","../src/unicode-property-data.js","../src/regexp.js","../src/tokenize.js","../src/index.js"],"sourcesContent":["// Reserved word lists for various dialects of the language\n\nexport const reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n}\n\n// And the keywords\n\nconst ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\"\n\nexport const keywords = {\n 5: ecma5AndLessKeywords,\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n}\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\n// Generated by `bin/generate-identifier-regex.js`.\n\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u08a0-\\u08b4\\u08b6-\\u08bd\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\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\"\nlet nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u08d3-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\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\"\n\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\")\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\")\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by bin/generate-identifier-regex.js\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,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]\n\n// eslint-disable-next-line comma-spacing\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,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]\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n let pos = 0x10000\n for (let i = 0; i < set.length; i += 2) {\n pos += set[i]\n if (pos > code) return false\n pos += set[i + 1]\n if (pos >= code) return true\n }\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code, astral) {\n if (code < 65) return code === 36\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code, astral) {\n if (code < 48) return code === 36\n if (code < 58) return true\n if (code < 65) return false\n if (code < 91) return true\n if (code < 97) return code === 95\n if (code < 123) return true\n if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))\n if (astral === false) return false\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n","// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nexport class TokenType {\n constructor(label, conf = {}) {\n this.label = label\n this.keyword = conf.keyword\n this.beforeExpr = !!conf.beforeExpr\n this.startsExpr = !!conf.startsExpr\n this.isLoop = !!conf.isLoop\n this.isAssign = !!conf.isAssign\n this.prefix = !!conf.prefix\n this.postfix = !!conf.postfix\n this.binop = conf.binop || null\n this.updateContext = null\n }\n}\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nconst beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}\n\n// Map keyword names to token types.\n\nexport const keywords = {}\n\n// Succinct definitions of keyword token types\nfunction kw(name, options = {}) {\n options.keyword = name\n return keywords[name] = new TokenType(name, options)\n}\n\nexport const types = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\"),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n}\n","// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nexport const lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\")\n\nexport function isNewLine(code, ecma2019String) {\n return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029))\n}\n\nexport const nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g\n","const {hasOwnProperty, toString} = Object.prototype\n\n// Checks if an object has a property.\n\nexport function has(obj, propName) {\n return hasOwnProperty.call(obj, propName)\n}\n\nexport const isArray = Array.isArray || ((obj) => (\n toString.call(obj) === \"[object Array]\"\n))\n\nexport function wordsRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n","import {lineBreakG} from \"./whitespace\"\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n constructor(line, col) {\n this.line = line\n this.column = col\n }\n\n offset(n) {\n return new Position(this.line, this.column + n)\n }\n}\n\nexport class SourceLocation {\n constructor(p, start, end) {\n this.start = start\n this.end = end\n if (p.sourceFile !== null) this.source = p.sourceFile\n }\n}\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nexport function getLineInfo(input, offset) {\n for (let line = 1, cur = 0;;) {\n lineBreakG.lastIndex = cur\n let match = lineBreakG.exec(input)\n if (match && match.index < offset) {\n ++line\n cur = match.index + match[0].length\n } else {\n return new Position(line, offset - cur)\n }\n }\n}\n","import {has, isArray} from \"./util\"\nimport {SourceLocation} from \"./locutil\"\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport const defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10\n // (2019). This influences support for strict mode, the set of\n // reserved words, and support for new syntax features. The default\n // is 9.\n ecmaVersion: 9,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: false,\n // When enabled, hashbang directive in the beginning of file\n // is allowed and treated as a line comment.\n allowHashBang: false,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts) {\n let options = {}\n\n for (let opt in defaultOptions)\n options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]\n\n if (options.ecmaVersion >= 2015)\n options.ecmaVersion -= 2009\n\n if (options.allowReserved == null)\n options.allowReserved = options.ecmaVersion < 5\n\n if (isArray(options.onToken)) {\n let tokens = options.onToken\n options.onToken = (token) => tokens.push(token)\n }\n if (isArray(options.onComment))\n options.onComment = pushComment(options, options.onComment)\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n let comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n }\n if (options.locations)\n comment.loc = new SourceLocation(this, startLoc, endLoc)\n if (options.ranges)\n comment.range = [start, end]\n array.push(comment)\n }\n}\n","// Each scope gets a bitset that may contain these flags\nexport const\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128\n\nexport function functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal and declareName to determine the type of a binding\nexport const\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5 // Special case for function names as bound inside the function\n","import {reservedWords, keywords} from \"./identifier\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\nimport {getOptions} from \"./options\"\nimport {wordsRegexp} from \"./util\"\nimport {SCOPE_TOP, SCOPE_FUNCTION, SCOPE_ASYNC, SCOPE_GENERATOR, SCOPE_SUPER, SCOPE_DIRECT_SUPER} from \"./scopeflags\"\n\nexport class Parser {\n constructor(options, input, startPos) {\n this.options = options = getOptions(options)\n this.sourceFile = options.sourceFile\n this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])\n let reserved = \"\"\n if (!options.allowReserved) {\n for (let v = options.ecmaVersion;; v--)\n if (reserved = reservedWords[v]) break\n if (options.sourceType === \"module\") reserved += \" await\"\n }\n this.reservedWords = wordsRegexp(reserved)\n let reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict\n this.reservedWordsStrict = wordsRegexp(reservedStrict)\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind)\n this.input = String(input)\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length\n } else {\n this.pos = this.lineStart = 0\n this.curLine = 1\n }\n\n // Properties of the current token:\n // Its type\n this.type = tt.eof\n // For tokens that include more information than their type, the value\n this.value = null\n // Its start and end offset\n this.start = this.end = this.pos\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition()\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null\n this.lastTokStart = this.lastTokEnd = this.pos\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext()\n this.exprAllowed = true\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\"\n this.strict = this.inModule || this.strictDirective(this.pos)\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0\n // Labels in scope.\n this.labels = []\n // Thus-far undefined exports.\n this.undefinedExports = {}\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n this.skipLineComment(2)\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = []\n this.enterScope(SCOPE_TOP)\n\n // For RegExp validation\n this.regexpState = null\n }\n\n parse() {\n let node = this.options.program || this.startNode()\n this.nextToken()\n return this.parseTopLevel(node)\n }\n\n get inFunction() { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }\n get inGenerator() { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }\n get inAsync() { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }\n get allowSuper() { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }\n get allowDirectSuper() { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }\n get treatFunctionsAsVar() { return this.treatFunctionsAsVarInScope(this.currentScope()) }\n\n // Switch to a getter for 7.0.0.\n inNonArrowFunction() { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }\n\n static extend(...plugins) {\n let cls = this\n for (let i = 0; i < plugins.length; i++) cls = plugins[i](cls)\n return cls\n }\n\n static parse(input, options) {\n return new this(options, input).parse()\n }\n\n static parseExpressionAt(input, pos, options) {\n let parser = new this(options, input, pos)\n parser.nextToken()\n return parser.parseExpression()\n }\n\n static tokenizer(input, options) {\n return new this(options, input)\n }\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\n\nconst pp = Parser.prototype\n\n// ## Parser utilities\n\nconst literal = /^(?:'((?:\\\\.|[^'])*?)'|\"((?:\\\\.|[^\"])*?)\")/\npp.strictDirective = function(start) {\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n let match = literal.exec(this.input.slice(start))\n if (!match) return false\n if ((match[1] || match[2]) === \"use strict\") return true\n start += match[0].length\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start\n start += skipWhiteSpace.exec(this.input)[0].length\n if (this.input[start] === \";\")\n start++\n }\n}\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp.eat = function(type) {\n if (this.type === type) {\n this.next()\n return true\n } else {\n return false\n }\n}\n\n// Tests whether parsed token is a contextual keyword.\n\npp.isContextual = function(name) {\n return this.type === tt.name && this.value === name && !this.containsEsc\n}\n\n// Consumes contextual keyword if possible.\n\npp.eatContextual = function(name) {\n if (!this.isContextual(name)) return false\n this.next()\n return true\n}\n\n// Asserts that following token is given contextual keyword.\n\npp.expectContextual = function(name) {\n if (!this.eatContextual(name)) this.unexpected()\n}\n\n// Test whether a semicolon can be inserted at the current position.\n\npp.canInsertSemicolon = function() {\n return this.type === tt.eof ||\n this.type === tt.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\npp.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)\n return true\n }\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp.semicolon = function() {\n if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()\n}\n\npp.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)\n if (!notNext)\n this.next()\n return true\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp.expect = function(type) {\n this.eat(type) || this.unexpected()\n}\n\n// Raise an unexpected token error.\n\npp.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\")\n}\n\nexport function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1\n}\n\npp.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) return\n if (refDestructuringErrors.trailingComma > -1)\n this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\")\n let parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind\n if (parens > -1) this.raiseRecoverable(parens, \"Parenthesized pattern\")\n}\n\npp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) return false\n let {shorthandAssign, doubleProto} = refDestructuringErrors\n if (!andThrow) return shorthandAssign >= 0 || doubleProto >= 0\n if (shorthandAssign >= 0)\n this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\")\n if (doubleProto >= 0)\n this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\")\n}\n\npp.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n this.raise(this.yieldPos, \"Yield expression cannot be a default value\")\n if (this.awaitPos)\n this.raise(this.awaitPos, \"Await expression cannot be a default value\")\n}\n\npp.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n return this.isSimpleAssignTarget(expr.expression)\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {lineBreak, skipWhiteSpace} from \"./whitespace\"\nimport {isIdentifierStart, isIdentifierChar, keywordRelationalOperator} from \"./identifier\"\nimport {has} from \"./util\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {functionFlags, SCOPE_SIMPLE_CATCH, BIND_SIMPLE_CATCH, BIND_LEXICAL, BIND_VAR, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp.parseTopLevel = function(node) {\n let exports = {}\n if (!node.body) node.body = []\n while (this.type !== tt.eof) {\n let stmt = this.parseStatement(null, true, exports)\n node.body.push(stmt)\n }\n if (this.inModule)\n for (let name of Object.keys(this.undefinedExports))\n this.raiseRecoverable(this.undefinedExports[name].start, `Export '${name}' is not defined`)\n this.adaptDirectivePrologue(node.body)\n this.next()\n if (this.options.ecmaVersion >= 6) {\n node.sourceType = this.options.sourceType\n }\n return this.finishNode(node, \"Program\")\n}\n\nconst loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"}\n\npp.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) return false\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91) return true // '['\n if (context) return false\n\n if (nextCh === 123) return true // '{'\n if (isIdentifierStart(nextCh, true)) {\n let pos = next + 1\n while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos\n let ident = this.input.slice(next, pos)\n if (!keywordRelationalOperator.test(ident)) return true\n }\n return false\n}\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n return false\n\n skipWhiteSpace.lastIndex = this.pos\n let skip = skipWhiteSpace.exec(this.input)\n let next = this.pos + skip[0].length\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp.parseStatement = function(context, topLevel, exports) {\n let starttype = this.type, node = this.startNode(), kind\n\n if (this.isLet(context)) {\n starttype = tt._var\n kind = \"let\"\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case tt._debugger: return this.parseDebuggerStatement(node)\n case tt._do: return this.parseDoStatement(node)\n case tt._for: return this.parseForStatement(node)\n case tt._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) this.unexpected()\n return this.parseFunctionStatement(node, false, !context)\n case tt._class:\n if (context) this.unexpected()\n return this.parseClass(node, true)\n case tt._if: return this.parseIfStatement(node)\n case tt._return: return this.parseReturnStatement(node)\n case tt._switch: return this.parseSwitchStatement(node)\n case tt._throw: return this.parseThrowStatement(node)\n case tt._try: return this.parseTryStatement(node)\n case tt._const: case tt._var:\n kind = kind || this.value\n if (context && kind !== \"var\") this.unexpected()\n return this.parseVarStatement(node, kind)\n case tt._while: return this.parseWhileStatement(node)\n case tt._with: return this.parseWithStatement(node)\n case tt.braceL: return this.parseBlock(true, node)\n case tt.semi: return this.parseEmptyStatement(node)\n case tt._export:\n case tt._import:\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n this.raise(this.start, \"'import' and 'export' may only appear at the top level\")\n if (!this.inModule)\n this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\")\n }\n return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) this.unexpected()\n this.next()\n return this.parseFunctionStatement(node, true, !context)\n }\n\n let maybeName = this.value, expr = this.parseExpression()\n if (starttype === tt.name && expr.type === \"Identifier\" && this.eat(tt.colon))\n return this.parseLabeledStatement(node, maybeName, expr, context)\n else return this.parseExpressionStatement(node, expr)\n }\n}\n\npp.parseBreakContinueStatement = function(node, keyword) {\n let isBreak = keyword === \"break\"\n this.next()\n if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null\n else if (this.type !== tt.name) this.unexpected()\n else {\n node.label = this.parseIdent()\n this.semicolon()\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n let i = 0\n for (; i < this.labels.length; ++i) {\n let lab = this.labels[i]\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) break\n if (node.label && isBreak) break\n }\n }\n if (i === this.labels.length) this.raise(node.start, \"Unsyntactic \" + keyword)\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n}\n\npp.parseDebuggerStatement = function(node) {\n this.next()\n this.semicolon()\n return this.finishNode(node, \"DebuggerStatement\")\n}\n\npp.parseDoStatement = function(node) {\n this.next()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"do\")\n this.labels.pop()\n this.expect(tt._while)\n node.test = this.parseParenExpression()\n if (this.options.ecmaVersion >= 6)\n this.eat(tt.semi)\n else\n this.semicolon()\n return this.finishNode(node, \"DoWhileStatement\")\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp.parseForStatement = function(node) {\n this.next()\n let awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual(\"await\")) ? this.lastTokStart : -1\n this.labels.push(loopLabel)\n this.enterScope(0)\n this.expect(tt.parenL)\n if (this.type === tt.semi) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, null)\n }\n let isLet = this.isLet()\n if (this.type === tt._var || this.type === tt._const || isLet) {\n let init = this.startNode(), kind = isLet ? \"let\" : this.value\n this.next()\n this.parseVar(init, true, kind)\n this.finishNode(init, \"VariableDeclaration\")\n if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1 &&\n !(kind !== \"var\" && init.declarations[0].init)) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n }\n let refDestructuringErrors = new DestructuringErrors\n let init = this.parseExpression(true, refDestructuringErrors)\n if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === tt._in) {\n if (awaitAt > -1) this.unexpected(awaitAt)\n } else node.await = awaitAt > -1\n }\n this.toAssignable(init, false, refDestructuringErrors)\n this.checkLVal(init)\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (awaitAt > -1) this.unexpected(awaitAt)\n return this.parseFor(node, init)\n}\n\npp.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next()\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n}\n\npp.parseIfStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\")\n node.alternate = this.eat(tt._else) ? this.parseStatement(\"if\") : null\n return this.finishNode(node, \"IfStatement\")\n}\n\npp.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n this.raise(this.start, \"'return' outside of function\")\n this.next()\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null\n else { node.argument = this.parseExpression(); this.semicolon() }\n return this.finishNode(node, \"ReturnStatement\")\n}\n\npp.parseSwitchStatement = function(node) {\n this.next()\n node.discriminant = this.parseParenExpression()\n node.cases = []\n this.expect(tt.braceL)\n this.labels.push(switchLabel)\n this.enterScope(0)\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n let cur\n for (let sawDefault = false; this.type !== tt.braceR;) {\n if (this.type === tt._case || this.type === tt._default) {\n let isCase = this.type === tt._case\n if (cur) this.finishNode(cur, \"SwitchCase\")\n node.cases.push(cur = this.startNode())\n cur.consequent = []\n this.next()\n if (isCase) {\n cur.test = this.parseExpression()\n } else {\n if (sawDefault) this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\")\n sawDefault = true\n cur.test = null\n }\n this.expect(tt.colon)\n } else {\n if (!cur) this.unexpected()\n cur.consequent.push(this.parseStatement(null))\n }\n }\n this.exitScope()\n if (cur) this.finishNode(cur, \"SwitchCase\")\n this.next() // Closing brace\n this.labels.pop()\n return this.finishNode(node, \"SwitchStatement\")\n}\n\npp.parseThrowStatement = function(node) {\n this.next()\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n this.raise(this.lastTokEnd, \"Illegal newline after throw\")\n node.argument = this.parseExpression()\n this.semicolon()\n return this.finishNode(node, \"ThrowStatement\")\n}\n\n// Reused empty array added for node fields that are always empty.\n\nconst empty = []\n\npp.parseTryStatement = function(node) {\n this.next()\n node.block = this.parseBlock()\n node.handler = null\n if (this.type === tt._catch) {\n let clause = this.startNode()\n this.next()\n if (this.eat(tt.parenL)) {\n clause.param = this.parseBindingAtom()\n let simple = clause.param.type === \"Identifier\"\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0)\n this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL)\n this.expect(tt.parenR)\n } else {\n if (this.options.ecmaVersion < 10) this.unexpected()\n clause.param = null\n this.enterScope(0)\n }\n clause.body = this.parseBlock(false)\n this.exitScope()\n node.handler = this.finishNode(clause, \"CatchClause\")\n }\n node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null\n if (!node.handler && !node.finalizer)\n this.raise(node.start, \"Missing catch or finally clause\")\n return this.finishNode(node, \"TryStatement\")\n}\n\npp.parseVarStatement = function(node, kind) {\n this.next()\n this.parseVar(node, false, kind)\n this.semicolon()\n return this.finishNode(node, \"VariableDeclaration\")\n}\n\npp.parseWhileStatement = function(node) {\n this.next()\n node.test = this.parseParenExpression()\n this.labels.push(loopLabel)\n node.body = this.parseStatement(\"while\")\n this.labels.pop()\n return this.finishNode(node, \"WhileStatement\")\n}\n\npp.parseWithStatement = function(node) {\n if (this.strict) this.raise(this.start, \"'with' in strict mode\")\n this.next()\n node.object = this.parseParenExpression()\n node.body = this.parseStatement(\"with\")\n return this.finishNode(node, \"WithStatement\")\n}\n\npp.parseEmptyStatement = function(node) {\n this.next()\n return this.finishNode(node, \"EmptyStatement\")\n}\n\npp.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (let label of this.labels)\n if (label.name === maybeName)\n this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\")\n let kind = this.type.isLoop ? \"loop\" : this.type === tt._switch ? \"switch\" : null\n for (let i = this.labels.length - 1; i >= 0; i--) {\n let label = this.labels[i]\n if (label.statementStart === node.start) {\n // Update information about previous labels on this node\n label.statementStart = this.start\n label.kind = kind\n } else break\n }\n this.labels.push({name: maybeName, kind, statementStart: this.start})\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\")\n this.labels.pop()\n node.label = expr\n return this.finishNode(node, \"LabeledStatement\")\n}\n\npp.parseExpressionStatement = function(node, expr) {\n node.expression = expr\n this.semicolon()\n return this.finishNode(node, \"ExpressionStatement\")\n}\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp.parseBlock = function(createNewLexicalScope = true, node = this.startNode()) {\n node.body = []\n this.expect(tt.braceL)\n if (createNewLexicalScope) this.enterScope(0)\n while (!this.eat(tt.braceR)) {\n let stmt = this.parseStatement(null)\n node.body.push(stmt)\n }\n if (createNewLexicalScope) this.exitScope()\n return this.finishNode(node, \"BlockStatement\")\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp.parseFor = function(node, init) {\n node.init = init\n this.expect(tt.semi)\n node.test = this.type === tt.semi ? null : this.parseExpression()\n this.expect(tt.semi)\n node.update = this.type === tt.parenR ? null : this.parseExpression()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, \"ForStatement\")\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp.parseForIn = function(node, init) {\n let type = this.type === tt._in ? \"ForInStatement\" : \"ForOfStatement\"\n this.next()\n if (type === \"ForInStatement\") {\n if (init.type === \"AssignmentPattern\" ||\n (init.type === \"VariableDeclaration\" && init.declarations[0].init != null &&\n (this.strict || init.declarations[0].id.type !== \"Identifier\")))\n this.raise(init.start, \"Invalid assignment in for-in loop head\")\n }\n node.left = init\n node.right = type === \"ForInStatement\" ? this.parseExpression() : this.parseMaybeAssign()\n this.expect(tt.parenR)\n node.body = this.parseStatement(\"for\")\n this.exitScope()\n this.labels.pop()\n return this.finishNode(node, type)\n}\n\n// Parse a list of variable declarations.\n\npp.parseVar = function(node, isFor, kind) {\n node.declarations = []\n node.kind = kind\n for (;;) {\n let decl = this.startNode()\n this.parseVarId(decl, kind)\n if (this.eat(tt.eq)) {\n decl.init = this.parseMaybeAssign(isFor)\n } else if (kind === \"const\" && !(this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected()\n } else if (decl.id.type !== \"Identifier\" && !(isFor && (this.type === tt._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\")\n } else {\n decl.init = null\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"))\n if (!this.eat(tt.comma)) break\n }\n return node\n}\n\npp.parseVarId = function(decl, kind) {\n if ((kind === \"const\" || kind === \"let\") && this.isContextual(\"let\")) {\n this.raiseRecoverable(this.start, \"let is disallowed as a lexically bound name\")\n }\n decl.id = this.parseBindingAtom()\n this.checkLVal(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false)\n}\n\nconst FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp.parseFunction = function(node, statement, allowExpressionBody, isAsync) {\n this.initFunction(node)\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === tt.star && (statement & FUNC_HANGING_STATEMENT))\n this.unexpected()\n node.generator = this.eat(tt.star)\n }\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== tt.name ? null : this.parseIdent()\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION)\n }\n\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n this.enterScope(functionFlags(node.async, node.generator))\n\n if (!(statement & FUNC_STATEMENT))\n node.id = this.type === tt.name ? this.parseIdent() : null\n\n this.parseFunctionParams(node)\n this.parseFunctionBody(node, allowExpressionBody, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n}\n\npp.parseFunctionParams = function(node) {\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp.parseClass = function(node, isStatement) {\n this.next()\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n const oldStrict = this.strict\n this.strict = true\n\n this.parseClassId(node, isStatement)\n this.parseClassSuper(node)\n let classBody = this.startNode()\n let hadConstructor = false\n classBody.body = []\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n const element = this.parseClassElement(node.superClass !== null)\n if (element) {\n classBody.body.push(element)\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) this.raise(element.start, \"Duplicate constructor in the same class\")\n hadConstructor = true\n }\n }\n }\n node.body = this.finishNode(classBody, \"ClassBody\")\n this.strict = oldStrict\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n}\n\npp.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(tt.semi)) return null\n\n let method = this.startNode()\n const tryContextual = (k, noLineBreak = false) => {\n const start = this.start, startLoc = this.startLoc\n if (!this.eatContextual(k)) return false\n if (this.type !== tt.parenL && (!noLineBreak || !this.canInsertSemicolon())) return true\n if (method.key) this.unexpected()\n method.computed = false\n method.key = this.startNodeAt(start, startLoc)\n method.key.name = k\n this.finishNode(method.key, \"Identifier\")\n return false\n }\n\n method.kind = \"method\"\n method.static = tryContextual(\"static\")\n let isGenerator = this.eat(tt.star)\n let isAsync = false\n if (!isGenerator) {\n if (this.options.ecmaVersion >= 8 && tryContextual(\"async\", true)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n } else if (tryContextual(\"get\")) {\n method.kind = \"get\"\n } else if (tryContextual(\"set\")) {\n method.kind = \"set\"\n }\n }\n if (!method.key) this.parsePropertyName(method)\n let {key} = method\n let allowsDirectSuper = false\n if (!method.computed && !method.static && (key.type === \"Identifier\" && key.name === \"constructor\" ||\n key.type === \"Literal\" && key.value === \"constructor\")) {\n if (method.kind !== \"method\") this.raise(key.start, \"Constructor can't have get/set modifier\")\n if (isGenerator) this.raise(key.start, \"Constructor can't be a generator\")\n if (isAsync) this.raise(key.start, \"Constructor can't be an async method\")\n method.kind = \"constructor\"\n allowsDirectSuper = constructorAllowsSuper\n } else if (method.static && key.type === \"Identifier\" && key.name === \"prototype\") {\n this.raise(key.start, \"Classes may not have a static property named prototype\")\n }\n this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper)\n if (method.kind === \"get\" && method.value.params.length !== 0)\n this.raiseRecoverable(method.value.start, \"getter should have no params\")\n if (method.kind === \"set\" && method.value.params.length !== 1)\n this.raiseRecoverable(method.value.start, \"setter should have exactly one param\")\n if (method.kind === \"set\" && method.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(method.value.params[0].start, \"Setter cannot use rest params\")\n return method\n}\n\npp.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper)\n return this.finishNode(method, \"MethodDefinition\")\n}\n\npp.parseClassId = function(node, isStatement) {\n if (this.type === tt.name) {\n node.id = this.parseIdent()\n if (isStatement === true)\n this.checkLVal(node.id, BIND_LEXICAL, false)\n } else {\n if (isStatement === true)\n this.unexpected()\n node.id = null\n }\n}\n\npp.parseClassSuper = function(node) {\n node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null\n}\n\n// Parses module export declaration.\n\npp.parseExport = function(node, exports) {\n this.next()\n // export * from '...'\n if (this.eat(tt.star)) {\n this.expectContextual(\"from\")\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n this.semicolon()\n return this.finishNode(node, \"ExportAllDeclaration\")\n }\n if (this.eat(tt._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart)\n let isAsync\n if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {\n let fNode = this.startNode()\n this.next()\n if (isAsync) this.next()\n node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === tt._class) {\n let cNode = this.startNode()\n node.declaration = this.parseClass(cNode, \"nullableID\")\n } else {\n node.declaration = this.parseMaybeAssign()\n this.semicolon()\n }\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseStatement(null)\n if (node.declaration.type === \"VariableDeclaration\")\n this.checkVariableExport(exports, node.declaration.declarations)\n else\n this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)\n node.specifiers = []\n node.source = null\n } else { // export { x, y as z } [from '...']\n node.declaration = null\n node.specifiers = this.parseExportSpecifiers(exports)\n if (this.eatContextual(\"from\")) {\n if (this.type !== tt.string) this.unexpected()\n node.source = this.parseExprAtom()\n } else {\n for (let spec of node.specifiers) {\n // check for keywords used as local names\n this.checkUnreserved(spec.local)\n // check if export is defined\n this.checkLocalExport(spec.local)\n }\n\n node.source = null\n }\n this.semicolon()\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n}\n\npp.checkExport = function(exports, name, pos) {\n if (!exports) return\n if (has(exports, name))\n this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\")\n exports[name] = true\n}\n\npp.checkPatternExport = function(exports, pat) {\n let type = pat.type\n if (type === \"Identifier\")\n this.checkExport(exports, pat.name, pat.start)\n else if (type === \"ObjectPattern\")\n for (let prop of pat.properties)\n this.checkPatternExport(exports, prop)\n else if (type === \"ArrayPattern\")\n for (let elt of pat.elements) {\n if (elt) this.checkPatternExport(exports, elt)\n }\n else if (type === \"Property\")\n this.checkPatternExport(exports, pat.value)\n else if (type === \"AssignmentPattern\")\n this.checkPatternExport(exports, pat.left)\n else if (type === \"RestElement\")\n this.checkPatternExport(exports, pat.argument)\n else if (type === \"ParenthesizedExpression\")\n this.checkPatternExport(exports, pat.expression)\n}\n\npp.checkVariableExport = function(exports, decls) {\n if (!exports) return\n for (let decl of decls)\n this.checkPatternExport(exports, decl.id)\n}\n\npp.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n}\n\n// Parses a comma-separated list of module exports.\n\npp.parseExportSpecifiers = function(exports) {\n let nodes = [], first = true\n // export { x, y as z } [from '...']\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.local = this.parseIdent(true)\n node.exported = this.eatContextual(\"as\") ? this.parseIdent(true) : node.local\n this.checkExport(exports, node.exported.name, node.exported.start)\n nodes.push(this.finishNode(node, \"ExportSpecifier\"))\n }\n return nodes\n}\n\n// Parses import declaration.\n\npp.parseImport = function(node) {\n this.next()\n // import '...'\n if (this.type === tt.string) {\n node.specifiers = empty\n node.source = this.parseExprAtom()\n } else {\n node.specifiers = this.parseImportSpecifiers()\n this.expectContextual(\"from\")\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()\n }\n this.semicolon()\n return this.finishNode(node, \"ImportDeclaration\")\n}\n\n// Parses a comma-separated list of module imports.\n\npp.parseImportSpecifiers = function() {\n let nodes = [], first = true\n if (this.type === tt.name) {\n // import defaultObj, { x, y as z } from '...'\n let node = this.startNode()\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportDefaultSpecifier\"))\n if (!this.eat(tt.comma)) return nodes\n }\n if (this.type === tt.star) {\n let node = this.startNode()\n this.next()\n this.expectContextual(\"as\")\n node.local = this.parseIdent()\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportNamespaceSpecifier\"))\n return nodes\n }\n this.expect(tt.braceL)\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n let node = this.startNode()\n node.imported = this.parseIdent(true)\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent()\n } else {\n this.checkUnreserved(node.imported)\n node.local = node.imported\n }\n this.checkLVal(node.local, BIND_LEXICAL)\n nodes.push(this.finishNode(node, \"ImportSpecifier\"))\n }\n return nodes\n}\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp.adaptDirectivePrologue = function(statements) {\n for (let i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1)\n }\n}\npp.isDirectiveCandidate = function(statement) {\n return (\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n}\n","import {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {has} from \"./util\"\nimport {BIND_NONE, BIND_OUTSIDE} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\")\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n for (let prop of node.properties) {\n this.toAssignable(prop, isBinding)\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\")\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") this.raise(node.key.start, \"Object pattern can't contain getter or setter\")\n this.toAssignable(node.value, isBinding)\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\"\n if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n this.toAssignableList(node.elements, isBinding)\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\"\n this.toAssignable(node.argument, isBinding)\n if (node.argument.type === \"AssignmentPattern\")\n this.raise(node.argument.start, \"Rest elements cannot have a default value\")\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\")\n node.type = \"AssignmentPattern\"\n delete node.operator\n this.toAssignable(node.left, isBinding)\n // falls through to AssignmentPattern\n\n case \"AssignmentPattern\":\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors)\n break\n\n case \"MemberExpression\":\n if (!isBinding) break\n\n default:\n this.raise(node.start, \"Assigning to rvalue\")\n }\n } else if (refDestructuringErrors) this.checkPatternErrors(refDestructuringErrors, true)\n return node\n}\n\n// Convert list of expression atoms to binding list.\n\npp.toAssignableList = function(exprList, isBinding) {\n let end = exprList.length\n for (let i = 0; i < end; i++) {\n let elt = exprList[i]\n if (elt) this.toAssignable(elt, isBinding)\n }\n if (end) {\n let last = exprList[end - 1]\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n this.unexpected(last.argument.start)\n }\n return exprList\n}\n\n// Parses spread element.\n\npp.parseSpread = function(refDestructuringErrors) {\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n return this.finishNode(node, \"SpreadElement\")\n}\n\npp.parseRestBinding = function() {\n let node = this.startNode()\n this.next()\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== tt.name)\n this.unexpected()\n\n node.argument = this.parseBindingAtom()\n\n return this.finishNode(node, \"RestElement\")\n}\n\n// Parses lvalue (assignable) atom.\n\npp.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case tt.bracketL:\n let node = this.startNode()\n this.next()\n node.elements = this.parseBindingList(tt.bracketR, true, true)\n return this.finishNode(node, \"ArrayPattern\")\n\n case tt.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n}\n\npp.parseBindingList = function(close, allowEmpty, allowTrailingComma) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (first) first = false\n else this.expect(tt.comma)\n if (allowEmpty && this.type === tt.comma) {\n elts.push(null)\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === tt.ellipsis) {\n let rest = this.parseRestBinding()\n this.parseBindingListItem(rest)\n elts.push(rest)\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n this.expect(close)\n break\n } else {\n let elem = this.parseMaybeDefault(this.start, this.startLoc)\n this.parseBindingListItem(elem)\n elts.push(elem)\n }\n }\n return elts\n}\n\npp.parseBindingListItem = function(param) {\n return param\n}\n\n// Parses assignment pattern around given atom if possible.\n\npp.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom()\n if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.right = this.parseMaybeAssign()\n return this.finishNode(node, \"AssignmentPattern\")\n}\n\n// Verify that a node is an lval — something that can be assigned\n// to.\n// bindingType can be either:\n// 'var' indicating that the lval creates a 'var' binding\n// 'let' indicating that the lval creates a lexical ('let' or 'const') binding\n// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references\n\npp.checkLVal = function(expr, bindingType = BIND_NONE, checkClashes) {\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n this.raiseRecoverable(expr.start, (bindingType ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\")\n if (checkClashes) {\n if (has(checkClashes, expr.name))\n this.raiseRecoverable(expr.start, \"Argument name clash\")\n checkClashes[expr.name] = true\n }\n if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) this.declareName(expr.name, bindingType, expr.start)\n break\n\n case \"MemberExpression\":\n if (bindingType) this.raiseRecoverable(expr.start, \"Binding member expression\")\n break\n\n case \"ObjectPattern\":\n for (let prop of expr.properties)\n this.checkLVal(prop, bindingType, checkClashes)\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLVal(expr.value, bindingType, checkClashes)\n break\n\n case \"ArrayPattern\":\n for (let elem of expr.elements) {\n if (elem) this.checkLVal(elem, bindingType, checkClashes)\n }\n break\n\n case \"AssignmentPattern\":\n this.checkLVal(expr.left, bindingType, checkClashes)\n break\n\n case \"RestElement\":\n this.checkLVal(expr.argument, bindingType, checkClashes)\n break\n\n case \"ParenthesizedExpression\":\n this.checkLVal(expr.expression, bindingType, checkClashes)\n break\n\n default:\n this.raise(expr.start, (bindingType ? \"Binding\" : \"Assigning to\") + \" rvalue\")\n }\n}\n","// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {types as tt} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {DestructuringErrors} from \"./parseutil\"\nimport {lineBreak} from \"./whitespace\"\nimport {functionFlags, SCOPE_ARROW, SCOPE_SUPER, SCOPE_DIRECT_SUPER, BIND_OUTSIDE, BIND_VAR} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n return\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n return\n let {key} = prop, name\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n let {kind} = prop\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors && refDestructuringErrors.doubleProto < 0) refDestructuringErrors.doubleProto = key.start\n // Backwards-compat kludge. Can be removed in version 6.0\n else this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\")\n }\n propHash.proto = true\n }\n return\n }\n name = \"$\" + name\n let other = propHash[name]\n if (other) {\n let redefinition\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set\n } else {\n redefinition = other.init || other[kind]\n }\n if (redefinition)\n this.raiseRecoverable(key.start, \"Redefinition of property\")\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n }\n }\n other[kind] = true\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp.parseExpression = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeAssign(noIn, refDestructuringErrors)\n if (this.type === tt.comma) {\n let node = this.startNodeAt(startPos, startLoc)\n node.expressions = [expr]\n while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors))\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) return this.parseYield(noIn)\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else this.exprAllowed = false\n }\n\n let ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldShorthandAssign = -1\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign\n oldTrailingComma = refDestructuringErrors.trailingComma\n oldShorthandAssign = refDestructuringErrors.shorthandAssign\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.shorthandAssign = -1\n } else {\n refDestructuringErrors = new DestructuringErrors\n ownDestructuringErrors = true\n }\n\n let startPos = this.start, startLoc = this.startLoc\n if (this.type === tt.parenL || this.type === tt.name)\n this.potentialArrowAt = this.start\n let left = this.parseMaybeConditional(noIn, refDestructuringErrors)\n if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)\n if (this.type.isAssign) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.left = this.type === tt.eq ? this.toAssignable(left, false, refDestructuringErrors) : left\n if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)\n refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly\n this.checkLVal(left)\n this.next()\n node.right = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)\n }\n if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign\n if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma\n if (oldShorthandAssign > -1) refDestructuringErrors.shorthandAssign = oldShorthandAssign\n return left\n}\n\n// Parse a ternary conditional (`?:`) operator.\n\npp.parseMaybeConditional = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprOps(noIn, refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n if (this.eat(tt.question)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.test = expr\n node.consequent = this.parseMaybeAssign()\n this.expect(tt.colon)\n node.alternate = this.parseMaybeAssign(noIn)\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n}\n\n// Start the precedence parser.\n\npp.parseExprOps = function(noIn, refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseMaybeUnary(refDestructuringErrors, false)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {\n let prec = this.type.binop\n if (prec != null && (!noIn || this.type !== tt._in)) {\n if (prec > minPrec) {\n let logical = this.type === tt.logicalOR || this.type === tt.logicalAND\n let op = this.value\n this.next()\n let startPos = this.start, startLoc = this.startLoc\n let right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)\n let node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)\n }\n }\n return left\n}\n\npp.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n let node = this.startNodeAt(startPos, startLoc)\n node.left = left\n node.operator = op\n node.right = right\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n}\n\n// Parse unary operators, both prefix and postfix.\n\npp.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {\n let startPos = this.start, startLoc = this.startLoc, expr\n if (this.isContextual(\"await\") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) {\n expr = this.parseAwait()\n sawUnary = true\n } else if (this.type.prefix) {\n let node = this.startNode(), update = this.type === tt.incDec\n node.operator = this.value\n node.prefix = true\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n this.checkExpressionErrors(refDestructuringErrors, true)\n if (update) this.checkLVal(node.argument)\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\")\n else sawUnary = true\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\")\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors)\n if (this.checkExpressionErrors(refDestructuringErrors)) return expr\n while (this.type.postfix && !this.canInsertSemicolon()) {\n let node = this.startNodeAt(startPos, startLoc)\n node.operator = this.value\n node.prefix = false\n node.argument = expr\n this.checkLVal(expr)\n this.next()\n expr = this.finishNode(node, \"UpdateExpression\")\n }\n }\n\n if (!sawUnary && this.eat(tt.starstar))\n return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), \"**\", false)\n else\n return expr\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp.parseExprSubscripts = function(refDestructuringErrors) {\n let startPos = this.start, startLoc = this.startLoc\n let expr = this.parseExprAtom(refDestructuringErrors)\n let skipArrowSubscripts = expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\"\n if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr\n let result = this.parseSubscripts(expr, startPos, startLoc)\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1\n if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1\n }\n return result\n}\n\npp.parseSubscripts = function(base, startPos, startLoc, noCalls) {\n let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === \"async\"\n while (true) {\n let element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow)\n if (element === base || element.type === \"ArrowFunctionExpression\") return element\n base = element\n }\n}\n\npp.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) {\n let computed = this.eat(tt.bracketL)\n if (computed || this.eat(tt.dot)) {\n let node = this.startNodeAt(startPos, startLoc)\n node.object = base\n node.property = computed ? this.parseExpression() : this.parseIdent(true)\n node.computed = !!computed\n if (computed) this.expect(tt.bracketR)\n base = this.finishNode(node, \"MemberExpression\")\n } else if (!noCalls && this.eat(tt.parenL)) {\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors)\n if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n if (this.awaitIdentPos > 0)\n this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\")\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true)\n }\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos\n let node = this.startNodeAt(startPos, startLoc)\n node.callee = base\n node.arguments = exprList\n base = this.finishNode(node, \"CallExpression\")\n } else if (this.type === tt.backQuote) {\n let node = this.startNodeAt(startPos, startLoc)\n node.tag = base\n node.quasi = this.parseTemplate({isTagged: true})\n base = this.finishNode(node, \"TaggedTemplateExpression\")\n }\n return base\n}\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp.parseExprAtom = function(refDestructuringErrors) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === tt.slash) this.readRegexp()\n\n let node, canBeArrow = this.potentialArrowAt === this.start\n switch (this.type) {\n case tt._super:\n if (!this.allowSuper)\n this.raise(this.start, \"'super' keyword outside a method\")\n node = this.startNode()\n this.next()\n if (this.type === tt.parenL && !this.allowDirectSuper)\n this.raise(node.start, \"super() call outside constructor of a subclass\")\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super Arguments\n if (this.type !== tt.dot && this.type !== tt.bracketL && this.type !== tt.parenL)\n this.unexpected()\n return this.finishNode(node, \"Super\")\n\n case tt._this:\n node = this.startNode()\n this.next()\n return this.finishNode(node, \"ThisExpression\")\n\n case tt.name:\n let startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc\n let id = this.parseIdent(false)\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(tt._function))\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true)\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(tt.arrow))\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === tt.name && !containsEsc) {\n id = this.parseIdent(false)\n if (this.canInsertSemicolon() || !this.eat(tt.arrow))\n this.unexpected()\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)\n }\n }\n return id\n\n case tt.regexp:\n let value = this.value\n node = this.parseLiteral(value.value)\n node.regex = {pattern: value.pattern, flags: value.flags}\n return node\n\n case tt.num: case tt.string:\n return this.parseLiteral(this.value)\n\n case tt._null: case tt._true: case tt._false:\n node = this.startNode()\n node.value = this.type === tt._null ? null : this.type === tt._true\n node.raw = this.type.keyword\n this.next()\n return this.finishNode(node, \"Literal\")\n\n case tt.parenL:\n let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n refDestructuringErrors.parenthesizedAssign = start\n if (refDestructuringErrors.parenthesizedBind < 0)\n refDestructuringErrors.parenthesizedBind = start\n }\n return expr\n\n case tt.bracketL:\n node = this.startNode()\n this.next()\n node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)\n return this.finishNode(node, \"ArrayExpression\")\n\n case tt.braceL:\n return this.parseObj(false, refDestructuringErrors)\n\n case tt._function:\n node = this.startNode()\n this.next()\n return this.parseFunction(node, 0)\n\n case tt._class:\n return this.parseClass(this.startNode(), false)\n\n case tt._new:\n return this.parseNew()\n\n case tt.backQuote:\n return this.parseTemplate()\n\n default:\n this.unexpected()\n }\n}\n\npp.parseLiteral = function(value) {\n let node = this.startNode()\n node.value = value\n node.raw = this.input.slice(this.start, this.end)\n this.next()\n return this.finishNode(node, \"Literal\")\n}\n\npp.parseParenExpression = function() {\n this.expect(tt.parenL)\n let val = this.parseExpression()\n this.expect(tt.parenR)\n return val\n}\n\npp.parseParenAndDistinguishExpression = function(canBeArrow) {\n let startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8\n if (this.options.ecmaVersion >= 6) {\n this.next()\n\n let innerStartPos = this.start, innerStartLoc = this.startLoc\n let exprList = [], first = true, lastIsComma = false\n let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart\n this.yieldPos = 0\n this.awaitPos = 0\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== tt.parenR) {\n first ? first = false : this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(tt.parenR, true)) {\n lastIsComma = true\n break\n } else if (this.type === tt.ellipsis) {\n spreadStart = this.start\n exprList.push(this.parseParenItem(this.parseRestBinding()))\n if (this.type === tt.comma) this.raise(this.start, \"Comma is not permitted after the rest element\")\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem))\n }\n }\n let innerEndPos = this.start, innerEndLoc = this.startLoc\n this.expect(tt.parenR)\n\n if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false)\n this.checkYieldAwaitInDefaultParams()\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n return this.parseParenArrowList(startPos, startLoc, exprList)\n }\n\n if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)\n if (spreadStart) this.unexpected(spreadStart)\n this.checkExpressionErrors(refDestructuringErrors, true)\n this.yieldPos = oldYieldPos || this.yieldPos\n this.awaitPos = oldAwaitPos || this.awaitPos\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc)\n val.expressions = exprList\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc)\n } else {\n val = exprList[0]\n }\n } else {\n val = this.parseParenExpression()\n }\n\n if (this.options.preserveParens) {\n let par = this.startNodeAt(startPos, startLoc)\n par.expression = val\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n}\n\npp.parseParenItem = function(item) {\n return item\n}\n\npp.parseParenArrowList = function(startPos, startLoc, exprList) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nconst empty = []\n\npp.parseNew = function() {\n let node = this.startNode()\n let meta = this.parseIdent(true)\n if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {\n node.meta = meta\n let containsEsc = this.containsEsc\n node.property = this.parseIdent(true)\n if (node.property.name !== \"target\" || containsEsc)\n this.raiseRecoverable(node.property.start, \"The only valid meta property for new is new.target\")\n if (!this.inNonArrowFunction())\n this.raiseRecoverable(node.start, \"new.target can only be used in functions\")\n return this.finishNode(node, \"MetaProperty\")\n }\n let startPos = this.start, startLoc = this.startLoc\n node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)\n if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)\n else node.arguments = empty\n return this.finishNode(node, \"NewExpression\")\n}\n\n// Parse template expression.\n\npp.parseTemplateElement = function({isTagged}) {\n let elem = this.startNode()\n if (this.type === tt.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\")\n }\n elem.value = {\n raw: this.value,\n cooked: null\n }\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n }\n }\n this.next()\n elem.tail = this.type === tt.backQuote\n return this.finishNode(elem, \"TemplateElement\")\n}\n\npp.parseTemplate = function({isTagged = false} = {}) {\n let node = this.startNode()\n this.next()\n node.expressions = []\n let curElt = this.parseTemplateElement({isTagged})\n node.quasis = [curElt]\n while (!curElt.tail) {\n if (this.type === tt.eof) this.raise(this.pos, \"Unterminated template literal\")\n this.expect(tt.dollarBraceL)\n node.expressions.push(this.parseExpression())\n this.expect(tt.braceR)\n node.quasis.push(curElt = this.parseTemplateElement({isTagged}))\n }\n this.next()\n return this.finishNode(node, \"TemplateLiteral\")\n}\n\npp.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === tt.name || this.type === tt.num || this.type === tt.string || this.type === tt.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === tt.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n}\n\n// Parse an object literal or binding pattern.\n\npp.parseObj = function(isPattern, refDestructuringErrors) {\n let node = this.startNode(), first = true, propHash = {}\n node.properties = []\n this.next()\n while (!this.eat(tt.braceR)) {\n if (!first) {\n this.expect(tt.comma)\n if (this.afterTrailingComma(tt.braceR)) break\n } else first = false\n\n const prop = this.parseProperty(isPattern, refDestructuringErrors)\n if (!isPattern) this.checkPropClash(prop, propHash, refDestructuringErrors)\n node.properties.push(prop)\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n}\n\npp.parseProperty = function(isPattern, refDestructuringErrors) {\n let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc\n if (this.options.ecmaVersion >= 9 && this.eat(tt.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false)\n if (this.type === tt.comma) {\n this.raise(this.start, \"Comma is not permitted after the rest element\")\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // To disallow parenthesized identifier via `this.toAssignable()`.\n if (this.type === tt.parenL && refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0) {\n refDestructuringErrors.parenthesizedAssign = this.start\n }\n if (refDestructuringErrors.parenthesizedBind < 0) {\n refDestructuringErrors.parenthesizedBind = this.start\n }\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors)\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === tt.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false\n prop.shorthand = false\n if (isPattern || refDestructuringErrors) {\n startPos = this.start\n startLoc = this.startLoc\n }\n if (!isPattern)\n isGenerator = this.eat(tt.star)\n }\n let containsEsc = this.containsEsc\n this.parsePropertyName(prop)\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(tt.star)\n this.parsePropertyName(prop, refDestructuringErrors)\n } else {\n isAsync = false\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc)\n return this.finishNode(prop, \"Property\")\n}\n\npp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === tt.colon)\n this.unexpected()\n\n if (this.eat(tt.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)\n prop.kind = \"init\"\n } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {\n if (isPattern) this.unexpected()\n prop.kind = \"init\"\n prop.method = true\n prop.value = this.parseMethod(isGenerator, isAsync)\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== tt.comma && this.type !== tt.braceR)) {\n if (isGenerator || isAsync) this.unexpected()\n prop.kind = prop.key.name\n this.parsePropertyName(prop)\n prop.value = this.parseMethod(false)\n let paramCount = prop.kind === \"get\" ? 0 : 1\n if (prop.value.params.length !== paramCount) {\n let start = prop.value.start\n if (prop.kind === \"get\")\n this.raiseRecoverable(start, \"getter should have no params\")\n else\n this.raiseRecoverable(start, \"setter should have exactly one param\")\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\")\n }\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) this.unexpected()\n this.checkUnreserved(prop.key)\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n this.awaitIdentPos = startPos\n prop.kind = \"init\"\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else if (this.type === tt.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n refDestructuringErrors.shorthandAssign = this.start\n prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)\n } else {\n prop.value = prop.key\n }\n prop.shorthand = true\n } else this.unexpected()\n}\n\npp.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(tt.bracketL)) {\n prop.computed = true\n prop.key = this.parseMaybeAssign()\n this.expect(tt.bracketR)\n return prop.key\n } else {\n prop.computed = false\n }\n }\n return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)\n}\n\n// Initialize empty function node.\n\npp.initFunction = function(node) {\n node.id = null\n if (this.options.ecmaVersion >= 6) node.generator = node.expression = false\n if (this.options.ecmaVersion >= 8) node.async = false\n}\n\n// Parse object or class method.\n\npp.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n let node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n\n this.initFunction(node)\n if (this.options.ecmaVersion >= 6)\n node.generator = isGenerator\n if (this.options.ecmaVersion >= 8)\n node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0))\n\n this.expect(tt.parenL)\n node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)\n this.checkYieldAwaitInDefaultParams()\n this.parseFunctionBody(node, false, true)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, \"FunctionExpression\")\n}\n\n// Parse arrow function expression with given parameters.\n\npp.parseArrowExpression = function(node, params, isAsync) {\n let oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW)\n this.initFunction(node)\n if (this.options.ecmaVersion >= 8) node.async = !!isAsync\n\n this.yieldPos = 0\n this.awaitPos = 0\n this.awaitIdentPos = 0\n\n node.params = this.toAssignableList(params, true)\n this.parseFunctionBody(node, true, false)\n\n this.yieldPos = oldYieldPos\n this.awaitPos = oldAwaitPos\n this.awaitIdentPos = oldAwaitIdentPos\n return this.finishNode(node, \"ArrowFunctionExpression\")\n}\n\n// Parse function body and check parameters.\n\npp.parseFunctionBody = function(node, isArrowFunction, isMethod) {\n let isExpression = isArrowFunction && this.type !== tt.braceL\n let oldStrict = this.strict, useStrict = false\n\n if (isExpression) {\n node.body = this.parseMaybeAssign()\n node.expression = true\n this.checkParams(node, false)\n } else {\n let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end)\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\")\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n let oldLabels = this.labels\n this.labels = []\n if (useStrict) this.strict = true\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params))\n node.body = this.parseBlock(false)\n node.expression = false\n this.adaptDirectivePrologue(node.body.body)\n this.labels = oldLabels\n }\n this.exitScope()\n\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) this.checkLVal(node.id, BIND_OUTSIDE)\n this.strict = oldStrict\n}\n\npp.isSimpleParamList = function(params) {\n for (let param of params)\n if (param.type !== \"Identifier\") return false\n return true\n}\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp.checkParams = function(node, allowDuplicates) {\n let nameHash = {}\n for (let param of node.params)\n this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash)\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n let elts = [], first = true\n while (!this.eat(close)) {\n if (!first) {\n this.expect(tt.comma)\n if (allowTrailingComma && this.afterTrailingComma(close)) break\n } else first = false\n\n let elt\n if (allowEmpty && this.type === tt.comma)\n elt = null\n else if (this.type === tt.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors)\n if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0)\n refDestructuringErrors.trailingComma = this.start\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors)\n }\n elts.push(elt)\n }\n return elts\n}\n\npp.checkUnreserved = function({start, end, name}) {\n if (this.inGenerator && name === \"yield\")\n this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\")\n if (this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\")\n if (this.keywords.test(name))\n this.raise(start, `Unexpected keyword '${name}'`)\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) return\n const re = this.strict ? this.reservedWordsStrict : this.reservedWords\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\")\n this.raiseRecoverable(start, `The keyword '${name}' is reserved`)\n }\n}\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp.parseIdent = function(liberal, isBinding) {\n let node = this.startNode()\n if (liberal && this.options.allowReserved === \"never\") liberal = false\n if (this.type === tt.name) {\n node.name = this.value\n } else if (this.type.keyword) {\n node.name = this.type.keyword\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop()\n }\n } else {\n this.unexpected()\n }\n this.next()\n this.finishNode(node, \"Identifier\")\n if (!liberal) {\n this.checkUnreserved(node)\n if (node.name === \"await\" && !this.awaitIdentPos)\n this.awaitIdentPos = node.start\n }\n return node\n}\n\n// Parses yield expression inside generator.\n\npp.parseYield = function(noIn) {\n if (!this.yieldPos) this.yieldPos = this.start\n\n let node = this.startNode()\n this.next()\n if (this.type === tt.semi || this.canInsertSemicolon() || (this.type !== tt.star && !this.type.startsExpr)) {\n node.delegate = false\n node.argument = null\n } else {\n node.delegate = this.eat(tt.star)\n node.argument = this.parseMaybeAssign(noIn)\n }\n return this.finishNode(node, \"YieldExpression\")\n}\n\npp.parseAwait = function() {\n if (!this.awaitPos) this.awaitPos = this.start\n\n let node = this.startNode()\n this.next()\n node.argument = this.parseMaybeUnary(null, true)\n return this.finishNode(node, \"AwaitExpression\")\n}\n","import {Parser} from \"./state\"\nimport {Position, getLineInfo} from \"./locutil\"\n\nconst pp = Parser.prototype\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp.raise = function(pos, message) {\n let loc = getLineInfo(this.input, pos)\n message += \" (\" + loc.line + \":\" + loc.column + \")\"\n let err = new SyntaxError(message)\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos\n throw err\n}\n\npp.raiseRecoverable = pp.raise\n\npp.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n}\n","import {Parser} from \"./state\"\nimport {SCOPE_VAR, SCOPE_FUNCTION, SCOPE_TOP, SCOPE_ARROW, SCOPE_SIMPLE_CATCH, BIND_LEXICAL, BIND_SIMPLE_CATCH, BIND_FUNCTION} from \"./scopeflags\"\n\nconst pp = Parser.prototype\n\nclass Scope {\n constructor(flags) {\n this.flags = flags\n // A list of var-declared names in the current lexical scope\n this.var = []\n // A list of lexically-declared names in the current lexical scope\n this.lexical = []\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = []\n }\n}\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags))\n}\n\npp.exitScope = function() {\n this.scopeStack.pop()\n}\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n}\n\npp.declareName = function(name, bindingType, pos) {\n let redeclared = false\n if (bindingType === BIND_LEXICAL) {\n const scope = this.currentScope()\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.lexical.push(name)\n if (this.inModule && (scope.flags & SCOPE_TOP))\n delete this.undefinedExports[name]\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n const scope = this.currentScope()\n scope.lexical.push(name)\n } else if (bindingType === BIND_FUNCTION) {\n const scope = this.currentScope()\n if (this.treatFunctionsAsVar)\n redeclared = scope.lexical.indexOf(name) > -1\n else\n redeclared = scope.lexical.indexOf(name) > -1 || scope.var.indexOf(name) > -1\n scope.functions.push(name)\n } else {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n const scope = this.scopeStack[i]\n if (scope.lexical.indexOf(name) > -1 && !((scope.flags & SCOPE_SIMPLE_CATCH) && scope.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope) && scope.functions.indexOf(name) > -1) {\n redeclared = true\n break\n }\n scope.var.push(name)\n if (this.inModule && (scope.flags & SCOPE_TOP))\n delete this.undefinedExports[name]\n if (scope.flags & SCOPE_VAR) break\n }\n }\n if (redeclared) this.raiseRecoverable(pos, `Identifier '${name}' has already been declared`)\n}\n\npp.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id\n }\n}\n\npp.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n}\n\npp.currentVarScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR) return scope\n }\n}\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp.currentThisScope = function() {\n for (let i = this.scopeStack.length - 1;; i--) {\n let scope = this.scopeStack[i]\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) return scope\n }\n}\n","import {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\n\nexport class Node {\n constructor(parser, pos, loc) {\n this.type = \"\"\n this.start = pos\n this.end = 0\n if (parser.options.locations)\n this.loc = new SourceLocation(parser, loc)\n if (parser.options.directSourceFile)\n this.sourceFile = parser.options.directSourceFile\n if (parser.options.ranges)\n this.range = [pos, 0]\n }\n}\n\n// Start an AST node, attaching a start offset.\n\nconst pp = Parser.prototype\n\npp.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n}\n\npp.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n}\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type\n node.end = pos\n if (this.options.locations)\n node.loc.end = loc\n if (this.options.ranges)\n node.range[1] = pos\n return node\n}\n\npp.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n}\n\n// Finish node at given position\n\npp.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n}\n","// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\nimport {Parser} from \"./state\"\nimport {types as tt} from \"./tokentype\"\nimport {lineBreak} from \"./whitespace\"\n\nexport class TokContext {\n constructor(token, isExpr, preserveSpace, override, generator) {\n this.token = token\n this.isExpr = !!isExpr\n this.preserveSpace = !!preserveSpace\n this.override = override\n this.generator = !!generator\n }\n}\n\nexport const types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, p => p.tryReadTemplateToken()),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n}\n\nconst pp = Parser.prototype\n\npp.initialContext = function() {\n return [types.b_stat]\n}\n\npp.braceIsBlock = function(prevType) {\n let parent = this.curContext()\n if (parent === types.f_expr || parent === types.f_stat)\n return true\n if (prevType === tt.colon && (parent === types.b_stat || parent === types.b_expr))\n return !parent.isExpr\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === tt._return || prevType === tt.name && this.exprAllowed)\n return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType === tt.arrow)\n return true\n if (prevType === tt.braceL)\n return parent === types.b_stat\n if (prevType === tt._var || prevType === tt._const || prevType === tt.name)\n return false\n return !this.exprAllowed\n}\n\npp.inGeneratorContext = function() {\n for (let i = this.context.length - 1; i >= 1; i--) {\n let context = this.context[i]\n if (context.token === \"function\")\n return context.generator\n }\n return false\n}\n\npp.updateContext = function(prevType) {\n let update, type = this.type\n if (type.keyword && prevType === tt.dot)\n this.exprAllowed = false\n else if (update = type.updateContext)\n update.call(this, prevType)\n else\n this.exprAllowed = type.beforeExpr\n}\n\n// Token-specific context update code\n\ntt.parenR.updateContext = tt.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true\n return\n }\n let out = this.context.pop()\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop()\n }\n this.exprAllowed = !out.isExpr\n}\n\ntt.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)\n this.exprAllowed = true\n}\n\ntt.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl)\n this.exprAllowed = true\n}\n\ntt.parenL.updateContext = function(prevType) {\n let statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while\n this.context.push(statementParens ? types.p_stat : types.p_expr)\n this.exprAllowed = true\n}\n\ntt.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n}\n\ntt._function.updateContext = tt._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&\n !(prevType === tt._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))\n this.context.push(types.f_expr)\n else\n this.context.push(types.f_stat)\n this.exprAllowed = false\n}\n\ntt.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n this.context.pop()\n else\n this.context.push(types.q_tmpl)\n this.exprAllowed = false\n}\n\ntt.star.updateContext = function(prevType) {\n if (prevType === tt._function) {\n let index = this.context.length - 1\n if (this.context[index] === types.f_expr)\n this.context[index] = types.f_expr_gen\n else\n this.context[index] = types.f_gen\n }\n this.exprAllowed = true\n}\n\ntt.name.updateContext = function(prevType) {\n let allowed = false\n if (this.options.ecmaVersion >= 6 && prevType !== tt.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n allowed = true\n }\n this.exprAllowed = allowed\n}\n","import {wordsRegexp} from \"./util.js\"\n\n// This file contains Unicode properties extracted from the ECMAScript\n// specification. The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nconst ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\"\nconst unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma9BinaryProperties + \" Extended_Pictographic\"\n}\n\n// #table-unicode-general-category-values\nconst unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\"\n\n// #table-unicode-script-values\nconst ecma9ScriptValues = \"Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\"\nconst unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\"\n}\n\nconst data = {}\nfunction buildUnicodeData(ecmaVersion) {\n let d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n }\n d.nonBinary.Script_Extensions = d.nonBinary.Script\n\n d.nonBinary.gc = d.nonBinary.General_Category\n d.nonBinary.sc = d.nonBinary.Script\n d.nonBinary.scx = d.nonBinary.Script_Extensions\n}\nbuildUnicodeData(9)\nbuildUnicodeData(10)\n\nexport default data\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier.js\"\nimport {Parser} from \"./state.js\"\nimport UNICODE_PROPERTY_VALUES from \"./unicode-property-data.js\"\nimport {has} from \"./util.js\"\n\nconst pp = Parser.prototype\n\nexport class RegExpValidationState {\n constructor(parser) {\n this.parser = parser\n this.validFlags = `gim${parser.options.ecmaVersion >= 6 ? \"uy\" : \"\"}${parser.options.ecmaVersion >= 9 ? \"s\" : \"\"}`\n this.unicodeProperties = UNICODE_PROPERTY_VALUES[parser.options.ecmaVersion >= 10 ? 10 : parser.options.ecmaVersion]\n this.source = \"\"\n this.flags = \"\"\n this.start = 0\n this.switchU = false\n this.switchN = false\n this.pos = 0\n this.lastIntValue = 0\n this.lastStringValue = \"\"\n this.lastAssertionIsQuantifiable = false\n this.numCapturingParens = 0\n this.maxBackReference = 0\n this.groupNames = []\n this.backReferenceNames = []\n }\n\n reset(start, pattern, flags) {\n const unicode = flags.indexOf(\"u\") !== -1\n this.start = start | 0\n this.source = pattern + \"\"\n this.flags = flags\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9\n }\n\n raise(message) {\n this.parser.raiseRecoverable(this.start, `Invalid regular expression: /${this.source}/: ${message}`)\n }\n\n // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n at(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return -1\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n return (c << 10) + s.charCodeAt(i + 1) - 0x35FDC00\n }\n\n nextIndex(i) {\n const s = this.source\n const l = s.length\n if (i >= l) {\n return l\n }\n const c = s.charCodeAt(i)\n if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return i + 1\n }\n return i + 2\n }\n\n current() {\n return this.at(this.pos)\n }\n\n lookahead() {\n return this.at(this.nextIndex(this.pos))\n }\n\n advance() {\n this.pos = this.nextIndex(this.pos)\n }\n\n eat(ch) {\n if (this.current() === ch) {\n this.advance()\n return true\n }\n return false\n }\n}\n\nfunction codePointToString(ch) {\n if (ch <= 0xFFFF) return String.fromCharCode(ch)\n ch -= 0x10000\n return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00)\n}\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpFlags = function(state) {\n const validFlags = state.validFlags\n const flags = state.flags\n\n for (let i = 0; i < flags.length; i++) {\n const flag = flags.charAt(i)\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\")\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\")\n }\n }\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp.validateRegExpPattern = function(state) {\n this.regexp_pattern(state)\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true\n this.regexp_pattern(state)\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp.regexp_pattern = function(state) {\n state.pos = 0\n state.lastIntValue = 0\n state.lastStringValue = \"\"\n state.lastAssertionIsQuantifiable = false\n state.numCapturingParens = 0\n state.maxBackReference = 0\n state.groupNames.length = 0\n state.backReferenceNames.length = 0\n\n this.regexp_disjunction(state)\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\")\n }\n if (state.eat(0x5D /* [ */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\")\n }\n for (const name of state.backReferenceNames) {\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\")\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp.regexp_disjunction = function(state) {\n this.regexp_alternative(state)\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state)\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\")\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n ;\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\")\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state)\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp.regexp_eatAssertion = function(state) {\n const start = state.pos\n state.lastAssertionIsQuantifiable = false\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n let lookbehind = false\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */)\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state)\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\")\n }\n state.lastAssertionIsQuantifiable = !lookbehind\n return true\n }\n }\n\n state.pos = start\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp.regexp_eatQuantifier = function(state, noError = false) {\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n}\npp.regexp_eatBracedQuantifier = function(state, noError) {\n const start = state.pos\n if (state.eat(0x7B /* { */)) {\n let min = 0, max = -1\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\")\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n}\npp.regexp_eatReverseSolidusAtomEscape = function(state) {\n const start = state.pos\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatUncapturingGroup = function(state) {\n const start = state.pos\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\")\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state)\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\")\n }\n this.regexp_disjunction(state)\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1\n return true\n }\n state.raise(\"Unterminated group\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp.regexp_eatSyntaxCharacter = function(state) {\n const ch = state.current()\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n return false\n}\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp.regexp_eatPatternCharacters = function(state) {\n const start = state.pos\n let ch = 0\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance()\n }\n return state.pos !== start\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp.regexp_eatExtendedPatternCharacter = function(state) {\n const ch = state.current()\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance()\n return true\n }\n return false\n}\n\n// GroupSpecifier[U] ::\n// [empty]\n// `?` GroupName[?U]\npp.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\")\n }\n state.groupNames.push(state.lastStringValue)\n return\n }\n state.raise(\"Invalid group\")\n }\n}\n\n// GroupName[U] ::\n// `<` RegExpIdentifierName[?U] `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\"\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\")\n }\n return false\n}\n\n// RegExpIdentifierName[U] ::\n// RegExpIdentifierStart[?U]\n// RegExpIdentifierName[?U] RegExpIdentifierPart[?U]\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\"\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue)\n }\n return true\n }\n return false\n}\n\n// RegExpIdentifierStart[U] ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\npp.regexp_eatRegExpIdentifierStart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart[U] ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[?U]\n// <ZWNJ>\n// <ZWJ>\npp.regexp_eatRegExpIdentifierPart = function(state) {\n const start = state.pos\n let ch = state.current()\n state.advance()\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) {\n ch = state.lastIntValue\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch\n return true\n }\n\n state.pos = start\n return false\n}\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\")\n }\n state.raise(\"Invalid escape\")\n }\n return false\n}\npp.regexp_eatBackReference = function(state) {\n const start = state.pos\n if (this.regexp_eatDecimalEscape(state)) {\n const n = state.lastIntValue\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue)\n return true\n }\n state.raise(\"Invalid named reference\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n}\npp.regexp_eatCControlLetter = function(state) {\n const start = state.pos\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n return false\n}\npp.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp.regexp_eatControlEscape = function(state) {\n const ch = state.current()\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09 /* \\t */\n state.advance()\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A /* \\n */\n state.advance()\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B /* \\v */\n state.advance()\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C /* \\f */\n state.advance()\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D /* \\r */\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp.regexp_eatControlLetter = function(state) {\n const ch = state.current()\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp.regexp_eatRegExpUnicodeEscapeSequence = function(state) {\n const start = state.pos\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n const lead = state.lastIntValue\n if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n const leadSurrogateEnd = state.pos\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n const trail = state.lastIntValue\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000\n return true\n }\n }\n state.pos = leadSurrogateEnd\n state.lastIntValue = lead\n }\n return true\n }\n if (\n state.switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid unicode escape\")\n }\n state.pos = start\n }\n\n return false\n}\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F /* / */\n return true\n }\n return false\n }\n\n const ch = state.current()\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0\n let ch = state.current()\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp.regexp_eatCharacterClassEscape = function(state) {\n const ch = state.current()\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1\n state.advance()\n return true\n }\n\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n (ch === 0x50 /* P */ || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1\n state.advance()\n if (\n state.eat(0x7B /* { */) &&\n this.regexp_eatUnicodePropertyValueExpression(state) &&\n state.eat(0x7D /* } */)\n ) {\n return true\n }\n state.raise(\"Invalid property name\")\n }\n\n return false\n}\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp.regexp_eatUnicodePropertyValueExpression = function(state) {\n const start = state.pos\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n const name = state.lastStringValue\n if (this.regexp_eatUnicodePropertyValue(state)) {\n const value = state.lastStringValue\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value)\n return true\n }\n }\n state.pos = start\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n const nameOrValue = state.lastStringValue\n this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n return true\n }\n return false\n}\npp.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!has(state.unicodeProperties.nonBinary, name))\n state.raise(\"Invalid property name\")\n if (!state.unicodeProperties.nonBinary[name].test(value))\n state.raise(\"Invalid property value\")\n}\npp.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (!state.unicodeProperties.binary.test(nameOrValue))\n state.raise(\"Invalid property name\")\n}\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp.regexp_eatUnicodePropertyName = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatUnicodePropertyValue = function(state) {\n let ch = 0\n state.lastStringValue = \"\"\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch)\n state.advance()\n }\n return state.lastStringValue !== \"\"\n}\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n state.eat(0x5E /* ^ */)\n this.regexp_classRanges(state)\n if (state.eat(0x5D /* [ */)) {\n return true\n }\n // Unreachable since it threw \"unterminated regular expression\" error before.\n state.raise(\"Unterminated character class\")\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp.regexp_classRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n const left = state.lastIntValue\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n const right = state.lastIntValue\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\")\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\")\n }\n }\n }\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp.regexp_eatClassAtom = function(state) {\n const start = state.pos\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n const ch = state.current()\n if (ch === 0x63 /* c */ || isOctalDigit(ch)) {\n state.raise(\"Invalid class escape\")\n }\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n\n const ch = state.current()\n if (ch !== 0x5D /* [ */) {\n state.lastIntValue = ch\n state.advance()\n return true\n }\n\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp.regexp_eatClassEscape = function(state) {\n const start = state.pos\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08 /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp.regexp_eatClassControlLetter = function(state) {\n const ch = state.current()\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20\n state.advance()\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatHexEscapeSequence = function(state) {\n const start = state.pos\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\")\n }\n state.pos = start\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp.regexp_eatDecimalDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp.regexp_eatHexDigits = function(state) {\n const start = state.pos\n let ch = 0\n state.lastIntValue = 0\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return state.pos !== start\n}\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n const n1 = state.lastIntValue\n if (this.regexp_eatOctalDigit(state)) {\n const n2 = state.lastIntValue\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue\n } else {\n state.lastIntValue = n1 * 8 + n2\n }\n } else {\n state.lastIntValue = n1\n }\n return true\n }\n return false\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp.regexp_eatOctalDigit = function(state) {\n const ch = state.current()\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30 /* 0 */\n state.advance()\n return true\n }\n state.lastIntValue = 0\n return false\n}\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp.regexp_eatFixedHexDigits = function(state, length) {\n const start = state.pos\n state.lastIntValue = 0\n for (let i = 0; i < length; ++i) {\n const ch = state.current()\n if (!isHexDigit(ch)) {\n state.pos = start\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch)\n state.advance()\n }\n return true\n}\n","import {isIdentifierStart, isIdentifierChar} from \"./identifier\"\nimport {types as tt, keywords as keywordTypes} from \"./tokentype\"\nimport {Parser} from \"./state\"\nimport {SourceLocation} from \"./locutil\"\nimport {RegExpValidationState} from \"./regexp\"\nimport {lineBreak, lineBreakG, isNewLine, nonASCIIwhitespace} from \"./whitespace\"\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(p) {\n this.type = p.type\n this.value = p.value\n this.start = p.start\n this.end = p.end\n if (p.options.locations)\n this.loc = new SourceLocation(p, p.startLoc, p.endLoc)\n if (p.options.ranges)\n this.range = [p.start, p.end]\n }\n}\n\n// ## Tokenizer\n\nconst pp = Parser.prototype\n\n// Move to the next token\n\npp.next = function() {\n if (this.options.onToken)\n this.options.onToken(new Token(this))\n\n this.lastTokEnd = this.end\n this.lastTokStart = this.start\n this.lastTokEndLoc = this.endLoc\n this.lastTokStartLoc = this.startLoc\n this.nextToken()\n}\n\npp.getToken = function() {\n this.next()\n return new Token(this)\n}\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n pp[Symbol.iterator] = function() {\n return {\n next: () => {\n let token = this.getToken()\n return {\n done: token.type === tt.eof,\n value: token\n }\n }\n }\n }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\npp.curContext = function() {\n return this.context[this.context.length - 1]\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n let curContext = this.curContext()\n if (!curContext || !curContext.preserveSpace) this.skipSpace()\n\n this.start = this.pos\n if (this.options.locations) this.startLoc = this.curPosition()\n if (this.pos >= this.input.length) return this.finishToken(tt.eof)\n\n if (curContext.override) return curContext.override(this)\n else this.readToken(this.fullCharCodeAtPos())\n}\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n return this.readWord()\n\n return this.getTokenFromCode(code)\n}\n\npp.fullCharCodeAtPos = function() {\n let code = this.input.charCodeAt(this.pos)\n if (code <= 0xd7ff || code >= 0xe000) return code\n let next = this.input.charCodeAt(this.pos + 1)\n return (code << 10) + next - 0x35fdc00\n}\n\npp.skipBlockComment = function() {\n let startLoc = this.options.onComment && this.curPosition()\n let start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2)\n if (end === -1) this.raise(this.pos - 2, \"Unterminated comment\")\n this.pos = end + 2\n if (this.options.locations) {\n lineBreakG.lastIndex = start\n let match\n while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {\n ++this.curLine\n this.lineStart = match.index + match[0].length\n }\n }\n if (this.options.onComment)\n this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition())\n}\n\npp.skipLineComment = function(startSkip) {\n let start = this.pos\n let startLoc = this.options.onComment && this.curPosition()\n let ch = this.input.charCodeAt(this.pos += startSkip)\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos)\n }\n if (this.options.onComment)\n this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition())\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n let ch = this.input.charCodeAt(this.pos)\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos\n }\n case 10: case 8232: case 8233:\n ++this.pos\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment()\n break\n case 47:\n this.skipLineComment(2)\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos\n } else {\n break loop\n }\n }\n }\n}\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos\n if (this.options.locations) this.endLoc = this.curPosition()\n let prevType = this.type\n this.type = type\n this.value = val\n\n this.updateContext(prevType)\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n let next = this.input.charCodeAt(this.pos + 1)\n if (next >= 48 && next <= 57) return this.readNumber(true)\n let next2 = this.input.charCodeAt(this.pos + 2)\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3\n return this.finishToken(tt.ellipsis)\n } else {\n ++this.pos\n return this.finishToken(tt.dot)\n }\n}\n\npp.readToken_slash = function() { // '/'\n let next = this.input.charCodeAt(this.pos + 1)\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.slash, 1)\n}\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n let tokentype = code === 42 ? tt.star : tt.modulo\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size\n tokentype = tt.starstar\n next = this.input.charCodeAt(this.pos + 2)\n }\n\n if (next === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tokentype, size)\n}\n\npp.readToken_pipe_amp = function(code) { // '|&'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)\n}\n\npp.readToken_caret = function() { // '^'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.bitwiseXOR, 1)\n}\n\npp.readToken_plus_min = function(code) { // '+-'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4)\n this.skipSpace()\n return this.nextToken()\n }\n if (next === 61) size = 2\n return this.finishOp(tt.relational, size)\n}\n\npp.readToken_eq_excl = function(code) { // '=!'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2\n return this.finishToken(tt.arrow)\n }\n return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)\n}\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(tt.parenL)\n case 41: ++this.pos; return this.finishToken(tt.parenR)\n case 59: ++this.pos; return this.finishToken(tt.semi)\n case 44: ++this.pos; return this.finishToken(tt.comma)\n case 91: ++this.pos; return this.finishToken(tt.bracketL)\n case 93: ++this.pos; return this.finishToken(tt.bracketR)\n case 123: ++this.pos; return this.finishToken(tt.braceL)\n case 125: ++this.pos; return this.finishToken(tt.braceR)\n case 58: ++this.pos; return this.finishToken(tt.colon)\n case 63: ++this.pos; return this.finishToken(tt.question)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) break\n ++this.pos\n return this.finishToken(tt.backQuote)\n\n case 48: // '0'\n let next = this.input.charCodeAt(this.pos + 1)\n if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number\n if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 126: // '~'\n return this.finishOp(tt.prefix, 1)\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\")\n}\n\npp.finishOp = function(type, size) {\n let str = this.input.slice(this.pos, this.pos + size)\n this.pos += size\n return this.finishToken(type, str)\n}\n\npp.readRegexp = function() {\n let escaped, inClass, start = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(start, \"Unterminated regular expression\")\n let ch = this.input.charAt(this.pos)\n if (lineBreak.test(ch)) this.raise(start, \"Unterminated regular expression\")\n if (!escaped) {\n if (ch === \"[\") inClass = true\n else if (ch === \"]\" && inClass) inClass = false\n else if (ch === \"/\" && !inClass) break\n escaped = ch === \"\\\\\"\n } else escaped = false\n ++this.pos\n }\n let pattern = this.input.slice(start, this.pos)\n ++this.pos\n let flagsStart = this.pos\n let flags = this.readWord1()\n if (this.containsEsc) this.unexpected(flagsStart)\n\n // Validate pattern\n const state = this.regexpState || (this.regexpState = new RegExpValidationState(this))\n state.reset(start, pattern, flags)\n this.validateRegExpFlags(state)\n this.validateRegExpPattern(state)\n\n // Create Literal#value property value.\n let value = null\n try {\n value = new RegExp(pattern, flags)\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(tt.regexp, {pattern, flags, value})\n}\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len) {\n let start = this.pos, total = 0\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n let code = this.input.charCodeAt(this.pos), val\n if (code >= 97) val = code - 97 + 10 // a\n else if (code >= 65) val = code - 65 + 10 // A\n else if (code >= 48 && code <= 57) val = code - 48 // 0-9\n else val = Infinity\n if (val >= radix) break\n ++this.pos\n total = total * radix + val\n }\n if (this.pos === start || len != null && this.pos - start !== len) return null\n\n return total\n}\n\npp.readRadixNumber = function(radix) {\n this.pos += 2 // 0x\n let val = this.readInt(radix)\n if (val == null) this.raise(this.start + 2, \"Expected number in radix \" + radix)\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n return this.finishToken(tt.num, val)\n}\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n let start = this.pos\n if (!startsWithDot && this.readInt(10) === null) this.raise(start, \"Invalid number\")\n let octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48\n if (octal && this.strict) this.raise(start, \"Invalid number\")\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) octal = false\n let next = this.input.charCodeAt(this.pos)\n if (next === 46 && !octal) { // '.'\n ++this.pos\n this.readInt(10)\n next = this.input.charCodeAt(this.pos)\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos)\n if (next === 43 || next === 45) ++this.pos // '+-'\n if (this.readInt(10) === null) this.raise(start, \"Invalid number\")\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, \"Identifier directly after number\")\n\n let str = this.input.slice(start, this.pos)\n let val = octal ? parseInt(str, 8) : parseFloat(str)\n return this.finishToken(tt.num, val)\n}\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n let ch = this.input.charCodeAt(this.pos), code\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) this.unexpected()\n let codePos = ++this.pos\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos)\n ++this.pos\n if (code > 0x10FFFF) this.invalidStringToken(codePos, \"Code point out of bounds\")\n } else {\n code = this.readHexChar(4)\n }\n return code\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) return String.fromCharCode(code)\n code -= 0x10000\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\npp.readString = function(quote) {\n let out = \"\", chunkStart = ++this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated string constant\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === quote) break\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(false)\n chunkStart = this.pos\n } else {\n if (isNewLine(ch, this.options.ecmaVersion >= 10)) this.raise(this.start, \"Unterminated string constant\")\n ++this.pos\n }\n }\n out += this.input.slice(chunkStart, this.pos++)\n return this.finishToken(tt.string, out)\n}\n\n// Reads template string tokens.\n\nconst INVALID_TEMPLATE_ESCAPE_ERROR = {}\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true\n try {\n this.readTmplToken()\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken()\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false\n}\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message)\n }\n}\n\npp.readTmplToken = function() {\n let out = \"\", chunkStart = this.pos\n for (;;) {\n if (this.pos >= this.input.length) this.raise(this.start, \"Unterminated template\")\n let ch = this.input.charCodeAt(this.pos)\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === tt.template || this.type === tt.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2\n return this.finishToken(tt.dollarBraceL)\n } else {\n ++this.pos\n return this.finishToken(tt.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos)\n return this.finishToken(tt.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos)\n out += this.readEscapedChar(true)\n chunkStart = this.pos\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos)\n ++this.pos\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) ++this.pos\n case 10:\n out += \"\\n\"\n break\n default:\n out += String.fromCharCode(ch)\n break\n }\n if (this.options.locations) {\n ++this.curLine\n this.lineStart = this.pos\n }\n chunkStart = this.pos\n } else {\n ++this.pos\n }\n }\n}\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n // falls through\n\n case \"`\":\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\")\n}\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n let ch = this.input.charCodeAt(++this.pos)\n ++this.pos\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine }\n return \"\"\n default:\n if (ch >= 48 && ch <= 55) {\n let octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0]\n let octal = parseInt(octalStr, 8)\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1)\n octal = parseInt(octalStr, 8)\n }\n this.pos += octalStr.length - 1\n ch = this.input.charCodeAt(this.pos)\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n )\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n}\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n let codePos = this.pos\n let n = this.readInt(16, len)\n if (n === null) this.invalidStringToken(codePos, \"Bad character escape sequence\")\n return n\n}\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false\n let word = \"\", first = true, chunkStart = this.pos\n let astral = this.options.ecmaVersion >= 6\n while (this.pos < this.input.length) {\n let ch = this.fullCharCodeAtPos()\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true\n word += this.input.slice(chunkStart, this.pos)\n let escStart = this.pos\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\")\n ++this.pos\n let esc = this.readCodePoint()\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n this.invalidStringToken(escStart, \"Invalid Unicode escape\")\n word += codePointToString(esc)\n chunkStart = this.pos\n } else {\n break\n }\n first = false\n }\n return word + this.input.slice(chunkStart, this.pos)\n}\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n let word = this.readWord1()\n let type = tt.name\n if (this.keywords.test(word)) {\n if (this.containsEsc) this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + word)\n type = keywordTypes[word]\n }\n return this.finishToken(type, word)\n}\n","// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\nimport {Parser} from \"./state\"\nimport \"./parseutil\"\nimport \"./statement\"\nimport \"./lval\"\nimport \"./expression\"\nimport \"./location\"\nimport \"./scope\"\n\nexport {Parser} from \"./state\"\nexport {defaultOptions} from \"./options\"\nexport {Position, SourceLocation, getLineInfo} from \"./locutil\"\nexport {Node} from \"./node\"\nexport {TokenType, types as tokTypes, keywords as keywordTypes} from \"./tokentype\"\nexport {TokContext, types as tokContexts} from \"./tokencontext\"\nexport {isIdentifierChar, isIdentifierStart} from \"./identifier\"\nexport {Token} from \"./tokenize\"\nexport {isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace} from \"./whitespace\"\n\nexport const version = \"6.1.0\"\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nexport function parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nexport function parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nexport function tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n"],"names":["const","let","keywords","tt","this","pp","init","label","node","empty","scope","types","UNICODE_PROPERTY_VALUES","codePointToString","ch","keywordTypes"],"mappings":"AAAA;;AAEA,AAAOA,IAAM,aAAa,GAAG;EAC3B,CAAC,EAAE,qNAAqN;EACxN,CAAC,EAAE,8CAA8C;EACjD,CAAC,EAAE,MAAM;EACT,MAAM,EAAE,wEAAwE;EAChF,UAAU,EAAE,gBAAgB;EAC7B;;;;AAIDA,IAAM,oBAAoB,GAAG,8KAA6K;;AAE1M,AAAOA,IAAM,QAAQ,GAAG;EACtB,CAAC,EAAE,oBAAoB;EACvB,CAAC,EAAE,oBAAoB,GAAG,0CAA0C;EACrE;;AAED,AAAOA,IAAM,yBAAyB,GAAG,kBAAiB;;;;;;;;;;AAU1DC,IAAI,4BAA4B,GAAG,4tIAA2tI;AAC9vIA,IAAI,uBAAuB,GAAG,sjFAAqjF;;AAEnlFD,IAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,EAAC;AACpFA,IAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,EAAC;;AAEzG,4BAA4B,GAAG,uBAAuB,GAAG,KAAI;;;;;;;;;AAS7DA,IAAM,0BAA0B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC;;;AAGvqCA,IAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CA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"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/acorn/package.json b/tools/node_modules/eslint/node_modules/acorn/package.json
index a937347bcd..7e48728b0f 100644
--- a/tools/node_modules/eslint/node_modules/acorn/package.json
+++ b/tools/node_modules/eslint/node_modules/acorn/package.json
@@ -39,5 +39,5 @@
"scripts": {
"prepare": "cd ..; npm run build:main && npm run build:bin"
},
- "version": "6.0.6"
+ "version": "6.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ajv/README.md b/tools/node_modules/eslint/node_modules/ajv/README.md
index af9b837828..5ddefa1347 100644
--- a/tools/node_modules/eslint/node_modules/ajv/README.md
+++ b/tools/node_modules/eslint/node_modules/ajv/README.md
@@ -4,7 +4,6 @@
The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/07.
-
[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv)
[![npm](https://img.shields.io/npm/v/ajv.svg)](https://www.npmjs.com/package/ajv)
[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv)
@@ -12,6 +11,7 @@ The fastest JSON Schema validator for Node.js and browser. Supports draft-04/06/
[![Greenkeeper badge](https://badges.greenkeeper.io/epoberezkin/ajv.svg)](https://greenkeeper.io/)
[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
+### _Ajv and [related repositories](#related-packages) will be transfered to [ajv-validator](https://github.com/ajv-validator) org_
## Using version 6
@@ -53,6 +53,7 @@ ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));
- [Defining custom keywords](#defining-custom-keywords)
- [Asynchronous schema compilation](#asynchronous-schema-compilation)
- [Asynchronous validation](#asynchronous-validation)
+ - [Security considerations](#security-considerations)
- Modifying data during validation
- [Filtering data](#filtering-data)
- [Assigning defaults](#assigning-defaults)
@@ -262,7 +263,7 @@ You can add additional formats and replace any of the formats above using [addFo
The option `unknownFormats` allows changing the default behaviour when an unknown format is encountered. In this case Ajv can either fail schema compilation (default) or ignore it (default in versions before 5.0.0). You also can whitelist specific format(s) to be ignored. See [Options](#options) for details.
-You can find patterns used for format validation and the sources that were used in [formats.js](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js).
+You can find regular expressions used for format validation and the sources that were used in [formats.js](https://github.com/epoberezkin/ajv/blob/master/lib/compile/formats.js).
## <a name="ref"></a>Combining schemas with $ref
@@ -605,6 +606,57 @@ validate(data).then(successFunc).catch(errorFunc);
See [Options](#options).
+## Security considerations
+
+JSON Schema, if properly used, can replace data sanitisation. It doesn't replace other API security considerations. It also introduces additional security aspects to consider.
+
+
+##### Untrusted schemas
+
+Ajv treats JSON schemas as trusted as your application code. This security model is based on the most common use case, when the schemas are static and bundled together with the application.
+
+If your schemas are received from untrusted sources (or generated from untrusted data) there are several scenarios you need to prevent:
+- compiling schemas can cause stack overflow (if they are too deep)
+- compiling schemas can be slow (e.g. [#557](https://github.com/epoberezkin/ajv/issues/557))
+- validating certain data can be slow
+
+It is difficult to predict all the scenarios, but at the very least it may help to limit the size of untrusted schemas (e.g. limit JSON string length) and also the maximum schema object depth (that can be high for relatively small JSON strings). You also may want to mitigate slow regular expressions in `pattern` and `patternProperties` keywords.
+
+Regardless the measures you take, using untrusted schemas increases security risks.
+
+
+##### Circular references in JavaScript objects
+
+Ajv does not support schemas and validated data that have circular references in objects. See [issue #802](https://github.com/epoberezkin/ajv/issues/802).
+
+An attempt to compile such schemas or validate such data would cause stack overflow (or will not complete in case of asynchronous validation). Depending on the parser you use, untrusted data can lead to circular references.
+
+
+##### Security risks of trusted schemas
+
+Some keywords in JSON Schemas can lead to very slow validation for certain data. These keywords include (but may be not limited to):
+
+- `pattern` and `format` for large strings - use `maxLength` to mitigate
+- `uniqueItems` for large non-scalar arrays - use `maxItems` to mitigate
+- `patternProperties` for large property names - use `propertyNames` to mitigate
+
+__Please note__: The suggestions above to prevent slow validation would only work if you do NOT use `allErrors: true` in production code (using it would continue validation after validation errors).
+
+You can validate your JSON schemas against [this meta-schema](https://github.com/epoberezkin/ajv/blob/master/lib/refs/json-schema-secure.json) to check that these recommendations are followed:
+
+```javascript
+const isSchemaSecure = ajv.compile(require('ajv/lib/refs/json-schema-secure.json'));
+
+const schema1 = {format: 'email'};
+isSchemaSecure(schema1); // false
+
+const schema2 = {format: 'email', maxLength: 256};
+isSchemaSecure(schema2); // true
+```
+
+__Please note__: following all these recommendation is not a guarantee that validation of untrusted data is safe - it can still lead to some undesirable results.
+
+
## Filtering data
With [option `removeAdditional`](#options) (added by [andyscott](https://github.com/andyscott)) you can filter data during the validation.
@@ -953,11 +1005,13 @@ Keyword definition is an object with the following properties:
- _inline_: compiling function that returns code (as string)
- _schema_: an optional `false` value used with "validate" keyword to not pass schema
- _metaSchema_: an optional meta-schema for keyword schema
+- _dependencies_: an optional list of properties that must be present in the parent schema - it will be checked during schema compilation
- _modifying_: `true` MUST be passed if keyword modifies data
+- _statements_: `true` can be passed in case inline keyword generates statements (as opposed to expression)
- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords.
- _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function).
- _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords.
-- _errors_: an optional boolean indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation.
+- _errors_: an optional boolean or string `"full"` indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation.
_compile_, _macro_ and _inline_ are mutually exclusive, only one should be used at a time. _validate_ can be used separately or in addition to them to support $data reference.
@@ -1049,7 +1103,10 @@ Defaults:
- _uniqueItems_: validate `uniqueItems` keyword (true by default).
- _unicode_: calculate correct length of strings with unicode pairs (true by default). Pass `false` to use `.length` of strings that is faster, but gives "incorrect" lengths of strings with unicode pairs - each unicode pair is counted as two characters.
- _nullable_: support keyword "nullable" from [Open API 3 specification](https://swagger.io/docs/specification/data-models/data-types/).
-- _format_: formats validation mode ('fast' by default). Pass 'full' for more correct and slow validation or `false` not to validate formats at all. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode.
+- _format_: formats validation mode. Option values:
+ - `"fast"` (default) - simplified and fast validation (see [Formats](#formats) for details of which formats are available and affected by this option).
+ - `"full"` - more restrictive and slow validation. E.g., 25:00:00 and 2015/14/33 will be invalid time and date in 'full' mode but it will be valid in 'fast' mode.
+ - `false` - ignore all format keywords.
- _formats_: an object with custom formats. Keys and values will be passed to `addFormat` method.
- _unknownFormats_: handling of unknown formats. Option values:
- `true` (default) - if an unknown format is encountered the exception is thrown during schema compilation. If `format` keyword value is [$data reference](#data-reference) and it is unknown the validation will fail.
@@ -1085,10 +1142,10 @@ Defaults:
- `"all"` - all additional properties are removed, regardless of `additionalProperties` keyword in schema (and no validation is made for them).
- `true` - only additional properties with `additionalProperties` keyword equal to `false` are removed.
- `"failing"` - additional properties that fail schema validation will be removed (where `additionalProperties` keyword is `false` or schema).
-- _useDefaults_: replace missing properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values:
+- _useDefaults_: replace missing or undefined properties and items with the values from corresponding `default` keywords. Default behaviour is to ignore `default` keywords. This option is not used if schema is added with `addMetaSchema` method. See examples in [Assigning defaults](#assigning-defaults). Option values:
- `false` (default) - do not use defaults
- `true` - insert defaults by value (object literal is used).
- - `"empty"` - use defaults for properties and items that are present and equal to `null` or `""` (an empty string).
+ - `"empty"` - in addition to missing or undefined, use defaults for properties and items that are equal to `null` or `""` (an empty string).
- `"shared"` (deprecated) - insert defaults by reference. If the default is an object, it will be shared by all instances of validated data. If you modify the inserted default in the validated data, it will be modified in the schema as well.
- _coerceTypes_: change data type of data to match `type` keyword. See the example in [Coercing data types](#coercing-data-types) and [coercion rules](https://github.com/epoberezkin/ajv/blob/master/COERCION.md). Option values:
- `false` (default) - no type coercion.
diff --git a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js
index 6b810ae26a..d76a8c5101 100644
--- a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js
+++ b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js
@@ -563,13 +563,21 @@ function compile(schema, root, localRefs, baseId) {
}
function useCustomRule(rule, schema, parentSchema, it) {
- var validateSchema = rule.definition.validateSchema;
- if (validateSchema && self._opts.validateSchema !== false) {
- var valid = validateSchema(schema);
- if (!valid) {
- var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
- if (self._opts.validateSchema == 'log') self.logger.error(message);
- else throw new Error(message);
+ if (self._opts.validateSchema !== false) {
+ var deps = rule.definition.dependencies;
+ if (deps && !deps.every(function(keyword) {
+ return Object.prototype.hasOwnProperty.call(parentSchema, keyword);
+ }))
+ throw new Error('parent schema must have all required keywords: ' + deps.join(','));
+
+ var validateSchema = rule.definition.validateSchema;
+ if (validateSchema) {
+ var valid = validateSchema(schema);
+ if (!valid) {
+ var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
+ if (self._opts.validateSchema == 'log') self.logger.error(message);
+ else throw new Error(message);
+ }
}
}
@@ -4654,6 +4662,7 @@ module.exports = function generate_validate(it, $keyword, $ruleType) {
var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;
var customRuleCode = require('./dotjs/custom');
+var metaSchema = require('./refs/json-schema-draft-07.json');
module.exports = {
add: addKeyword,
@@ -4661,6 +4670,41 @@ module.exports = {
remove: removeKeyword
};
+var definitionSchema = {
+ definitions: {
+ simpleTypes: metaSchema.definitions.simpleTypes
+ },
+ type: 'object',
+ dependencies: {
+ schema: ['validate'],
+ $data: ['validate'],
+ statements: ['inline'],
+ valid: {not: {required: ['macro']}}
+ },
+ properties: {
+ type: metaSchema.properties.type,
+ schema: {type: 'boolean'},
+ statements: {type: 'boolean'},
+ dependencies: {
+ type: 'array',
+ items: {type: 'string'}
+ },
+ metaSchema: {type: 'object'},
+ modifying: {type: 'boolean'},
+ valid: {type: 'boolean'},
+ $data: {type: 'boolean'},
+ async: {type: 'boolean'},
+ errors: {
+ anyOf: [
+ {type: 'boolean'},
+ {const: 'full'}
+ ]
+ }
+ }
+};
+
+var validateDefinition;
+
/**
* Define custom keyword
* @this Ajv
@@ -4680,26 +4724,22 @@ function addKeyword(keyword, definition) {
throw new Error('Keyword ' + keyword + ' is not a valid identifier');
if (definition) {
- if (definition.macro && definition.valid !== undefined)
- throw new Error('"valid" option cannot be used with macro keywords');
+ validateDefinition = validateDefinition || this.compile(definitionSchema);
+
+ if (!validateDefinition(definition))
+ throw new Error('custom keyword definition is invalid: ' + this.errorsText(validateDefinition.errors));
var dataType = definition.type;
if (Array.isArray(dataType)) {
- var i, len = dataType.length;
- for (i=0; i<len; i++) checkDataType(dataType[i]);
- for (i=0; i<len; i++) _addRule(keyword, dataType[i], definition);
+ for (var i=0; i<dataType.length; i++)
+ _addRule(keyword, dataType[i], definition);
} else {
- if (dataType) checkDataType(dataType);
_addRule(keyword, dataType, definition);
}
- var $data = definition.$data === true && this._opts.$data;
- if ($data && !definition.validate)
- throw new Error('$data support: "validate" function is not defined');
-
var metaSchema = definition.metaSchema;
if (metaSchema) {
- if ($data) {
+ if (definition.$data && this._opts.$data) {
metaSchema = {
anyOf: [
metaSchema,
@@ -4740,11 +4780,6 @@ function addKeyword(keyword, definition) {
RULES.custom[keyword] = rule;
}
-
- function checkDataType(dataType) {
- if (!RULES.types[dataType]) throw new Error('Unknown type ' + dataType);
- }
-
return this;
}
@@ -4786,7 +4821,7 @@ function removeKeyword(keyword) {
return this;
}
-},{"./dotjs/custom":21}],39:[function(require,module,exports){
+},{"./dotjs/custom":21,"./refs/json-schema-draft-07.json":40}],39:[function(require,module,exports){
module.exports={
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",
@@ -6648,7 +6683,7 @@ function Ajv(opts) {
if (opts.formats) addInitialFormats(this);
addDefaultMetaSchema(this);
if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
- if (opts.nullable) this.addKeyword('nullable', {metaSchema: {const: true}});
+ if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});
addInitialSchemas(this);
}
diff --git a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js
index 91d0ee93f8..bf9c9a9291 100644
--- a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js
+++ b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js
@@ -1,3 +1,3 @@
-/* ajv 6.7.0: Another JSON Schema Validator */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function o(i,n,l){function u(r,e){if(!n[r]){if(!i[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(c)return c(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[r]={exports:{}};i[r][0].call(s.exports,function(e){return u(i[r][1][e]||e)},s,s.exports,o,i,n,l)}return n[r].exports}for(var c="function"==typeof require&&require,e=0;e<l.length;e++)u(l[e]);return u}({1:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],2:[function(e,r,t){"use strict";var s=e("./error_classes").MissingRef;r.exports=function t(r,i,a){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof i&&(a=i,i=void 0);var e=l(r).then(function(){var e=n._addSchema(r,void 0,i);return e.validate||u(e)});a&&e.then(function(e){a(null,e)},a);return e;function l(e){var r=e.$schema;return r&&!n.getSchema(r)?t.call(n,{$ref:r},!0):Promise.resolve()}function u(o){try{return n._compile(o)}catch(e){if(e instanceof s)return r(e);throw e}function r(e){var r=e.missingSchema;if(s(r))throw new Error("Schema "+r+" is loaded but "+e.missingRef+" cannot be resolved");var t=n._loadingSchemas[r];return t||(t=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(a,a),t.then(function(e){if(!s(r))return l(e).then(function(){s(r)||n.addSchema(e,r,void 0,i)})}).then(function(){return u(o)});function a(){delete n._loadingSchemas[r]}function s(e){return n._refs[e]||n._schemas[e]}}}}},{"./error_classes":3}],3:[function(e,r,t){"use strict";var a=e("./resolve");function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=a.url(e,r),this.missingSchema=a.normalizeId(a.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}r.exports={Validation:o(function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":6}],4:[function(e,r,t){"use strict";var a=e("./util"),o=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,i=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,s=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,u=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,c=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,f=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,p=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function g(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":u,url:c,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p},m.full={date:v,time:g,"date-time":function(e){var r=e.split(y);return 2==r.length&&v(r[0])&&g(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":u,url:c,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:function(e){return e.length<=255&&s.test(e)},ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":f,"relative-json-pointer":p};var y=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var $=e("./resolve"),D=e("./util"),j=e("./error_classes"),O=e("fast-json-stable-stringify"),I=e("../dotjs/validate"),A=D.ucs2length,C=e("fast-deep-equal"),k=j.Validation;function L(e,r,t){var a=s.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}function z(e,r,t){var a=s.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}function s(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function T(e,r){return"var pattern"+e+" = new RegExp("+D.toQuotedString(r[e])+");"}function N(e){return"var default"+e+" = defaults["+e+"];"}function q(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function Q(e){return"var customRule"+e+" = customRules["+e+"];"}function U(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}r.exports=function u(e,c,h,r){var d=this,f=this._opts,p=[void 0],m={},v=[],t={},g=[],a={},y=[];c=c||{schema:e,refVal:p,refs:m};var s=L.call(this,e,c,r);var o=this._compilations[s.index];if(s.compiling)return o.callValidate=l;var P=this._formats;var E=this.RULES;try{var i=w(e,c,h,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,f.sourceCode&&(n.source=i.source)),i}finally{z.call(this,e,c,r)}function l(){var e=o.validate,r=e.apply(this,arguments);return l.errors=e.errors,r}function w(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=c.schema)return u.call(d,e,r,t,a);var o,i=!0===e.$async,n=I({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:j.MissingRef,RULES:E,validate:I,util:D,resolve:$,resolveRef:S,usePattern:F,useDefault:x,useCustomRule:R,opts:f,formats:P,logger:d.logger,self:d});n=U(p,q)+U(v,T)+U(g,N)+U(y,Q)+n,f.processCode&&(n=f.processCode(n));try{var l=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n);o=l(d,E,P,c,p,g,y,C,A,k),p[0]=o}catch(e){throw d.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=m,o.refVal=p,o.root=s?o:r,i&&(o.$async=!0),!0===f.sourceCode&&(o.source={code:n,patterns:v,defaults:g}),o}function S(e,r,t){r=$.url(e,r);var a,s,o=m[r];if(void 0!==o)return _(a=p[o],s="refVal["+o+"]");if(!t&&c.refs){var i=c.refs[r];if(void 0!==i)return s=b(r,a=c.refVal[i]),_(a,s)}s=b(r);var n=$.call(d,w,c,r);if(void 0===n){var l=h&&h[r];l&&(n=$.inlineRef(l,f.inlineRefs)?l:u.call(d,l,c,h,e))}if(void 0!==n)return p[m[r]]=n,_(n,s);delete m[r]}function b(e,r){var t=p.length;return p[t]=r,"refVal"+(m[e]=t)}function _(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function F(e){var r=t[e];return void 0===r&&(r=t[e]=v.length,v[r]=e),"pattern"+r}function x(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return D.toQuotedString(e);case"object":if(null===e)return"null";var r=O(e),t=a[r];return void 0===t&&(t=a[r]=g.length,g[t]=e),"default"+t}}function R(e,r,t,a){var s=e.definition.validateSchema;if(s&&!1!==d._opts.validateSchema){var o=s(r);if(!o){var i="keyword schema is invalid: "+d.errorsText(s.errors);if("log"!=d._opts.validateSchema)throw new Error(i);d.logger.error(i)}}var n,l=e.definition.compile,u=e.definition.inline,c=e.definition.macro;if(l)n=l.call(d,r,t,a);else if(c)n=c.call(d,r,t,a),!1!==f.validateSchema&&d.validateSchema(n,!0);else if(u)n=u.call(d,a,e.keyword,r,t);else if(!(n=e.definition.validate))return;if(void 0===n)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var h=y.length;return{code:"customRule"+h,validate:y[h]=n}}}},{"../dotjs/validate":37,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":41,"fast-json-stable-stringify":42}],6:[function(e,r,t){"use strict";var m=e("uri-js"),v=e("fast-deep-equal"),g=e("./util"),l=e("./schema_obj"),a=e("json-schema-traverse");function u(e,r,t){var a=this._refs[t];if("string"==typeof a){if(!this._refs[a])return u.call(this,e,r,a);a=this._refs[a]}if((a=a||this._schemas[t])instanceof l)return d(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var s,o,i,n=c.call(this,r,t);return n&&(s=n.schema,r=n.root,i=n.baseId),s instanceof l?o=s.validate||e.call(this,s.schema,r,void 0,i):void 0!==s&&(o=d(s,this._opts.inlineRefs)?s:e.call(this,s,r,void 0,i)),o}function c(e,r){var t=m.parse(r),a=f(t),s=y(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==s){var o=P(a),i=this._refs[o];if("string"==typeof i)return function(e,r,t){var a=c.call(this,e,r);if(a){var s=a.schema,o=a.baseId;e=a.root;var i=this._getId(s);return i&&(o=p(o,i)),n.call(this,t,o,s,e)}}.call(this,e,i,t);if(i instanceof l)i.validate||this._compile(i),e=i;else{if(!((i=this._schemas[o])instanceof l))return;if(i.validate||this._compile(i),o==P(r))return{schema:i,root:e,baseId:s};e=i}if(!e.schema)return;s=y(this._getId(e.schema))}return n.call(this,t,s,e.schema,e)}(r.exports=u).normalizeId=P,u.fullPath=y,u.url=p,u.ids=function(e){var r=P(this._getId(e)),h={"":r},d={"":y(r,!1)},f={},p=this;return a(e,{allKeys:!0},function(e,r,t,a,s,o,i){if(""!==r){var n=p._getId(e),l=h[a],u=d[a]+"/"+s;if(void 0!==i&&(u+="/"+("number"==typeof i?i:g.escapeFragment(i))),"string"==typeof n){n=l=P(l?m.resolve(l,n):n);var c=p._refs[n];if("string"==typeof c&&(c=p._refs[c]),c&&c.schema){if(!v(e,c.schema))throw new Error('id "'+n+'" resolves to more than one schema')}else if(n!=P(u))if("#"==n[0]){if(f[n]&&!v(e,f[n]))throw new Error('id "'+n+'" resolves to more than one schema');f[n]=e}else p._refs[n]=u}h[r]=l,d[r]=u}}),f},u.inlineRef=d,u.schema=c;var h=g.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function n(e,r,t,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var s=e.fragment.split("/"),o=1;o<s.length;o++){var i=s[o];if(i){if(void 0===(t=t[i=g.unescapeFragment(i)]))break;var n;if(!h[i]&&((n=this._getId(t))&&(r=p(r,n)),t.$ref)){var l=p(r,t.$ref),u=c.call(this,a,l);u&&(t=u.schema,a=u.root,r=u.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}var i=g.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]);function d(e,r){return!1!==r&&(void 0===r||!0===r?function e(r){var t;if(Array.isArray(r)){for(var a=0;a<r.length;a++)if("object"==typeof(t=r[a])&&!e(t))return!1}else for(var s in r){if("$ref"==s)return!1;if("object"==typeof(t=r[s])&&!e(t))return!1}return!0}(e):r?function e(r){var t,a=0;if(Array.isArray(r)){for(var s=0;s<r.length;s++)if("object"==typeof(t=r[s])&&(a+=e(t)),a==1/0)return 1/0}else for(var o in r){if("$ref"==o)return 1/0;if(i[o])a++;else if("object"==typeof(t=r[o])&&(a+=e(t)+1),a==1/0)return 1/0}return a}(e)<=r:void 0)}function y(e,r){return!1!==r&&(e=P(e)),f(m.parse(e))}function f(e){return m.serialize(e).split("#")[0]+"#"}var s=/#\/?$/;function P(e){return e?e.replace(s,""):""}function p(e,r){return r=P(r),m.resolve(e,r)}},{"./schema_obj":8,"./util":10,"fast-deep-equal":41,"json-schema-traverse":43,"uri-js":44}],7:[function(e,r,t){"use strict";var o=e("../dotjs"),i=e("./util").toHash;r.exports=function(){var a=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],s=["type","$comment"];return a.all=i(s),a.types=i(["number","integer","string","array","object","boolean","null"]),a.forEach(function(e){e.rules=e.rules.map(function(e){var r;if("object"==typeof e){var t=Object.keys(e)[0];r=e[t],e=t,r.forEach(function(e){s.push(e),a.all[e]=!0})}return s.push(e),a.all[e]={keyword:e,code:o[e],implements:r}}),a.all.$comment={keyword:"$comment",code:o.$comment},e.type&&(a.types[e.type]=e)}),a.keywords=i(s.concat(["$schema","$id","id","$data","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),a.custom={},a}},{"../dotjs":26,"./util":10}],8:[function(e,r,t){"use strict";var a=e("./util");r.exports=function(e){a.copy(e,this)}},{"./util":10}],9:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,55296<=(r=e.charCodeAt(s++))&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],10:[function(e,r,t){"use strict";function o(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}r.exports={copy:function(e,r){for(var t in r=r||{},e)r[t]=e[t];return r},checkDataType:o,checkDataTypes:function(e,r){switch(e.length){case 1:return o(e[0],r,!0);default:var t="",a=n(e);for(var s in a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer,a)t+=(t?" && ":"")+o(s,r,!0);return t}},coerceToTypes:function(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];i[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(i[r])return[r];if("array"===e&&"array"===r)return["array"]}},toHash:n,getProperty:h,escapeQuotes:l,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:function(e,r){var t=e.match(new RegExp(r+="[^0-9]","g"));return t?t.length:0},varReplace:function(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")},cleanUpCode:function(e){return e.replace(u,"").replace(c,"").replace(d,"if (!($1))")},finalCleanUpCode:function(e,r){var t=e.match(f);t&&2==t.length&&(e=r?e.replace(m,"").replace(y,P):e.replace(p,"").replace(v,g));return(t=e.match(E))&&3===t.length?e.replace(w,""):e},schemaHasRules:function(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0},schemaHasRulesExcept:function(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0},toQuotedString:S,getPathExpr:function(e,r,t,a){return F(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")},getPath:function(e,r,t){var a=S(t?"/"+x(r):h(r));return F(e,a)},getData:function(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!b.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(_)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(r<=a)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(r<a)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,l=s.split("/"),u=0;u<l.length;u++){var c=l[u];c&&(o+=h(R(c)),n+=" && "+o)}return n},unescapeFragment:function(e){return R(decodeURIComponent(e))},unescapeJsonPointer:R,escapeFragment:function(e){return encodeURIComponent(x(e))},escapeJsonPointer:x};var i=n(["string","number","integer","boolean","null"]);function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}var a=/^[a-z$_][a-z$_0-9]*$/i,s=/'|\\/g;function h(e){return"number"==typeof e?"["+e+"]":a.test(e)?"."+e:"['"+l(e)+"']"}function l(e){return e.replace(s,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}var u=/else\s*{\s*}/g,c=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,d=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;var f=/[^v.]errors/g,p=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,m=/var errors = 0;|var vErrors = null;/g,v="return errors === 0;",g="validate.errors = null; return true;",y=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,P="return data;",E=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,w=/if \(rootData === undefined\) rootData = data;/;function S(e){return"'"+l(e)+"'"}var b=/^\/(?:[^~]|~0|~1)*$/,_=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function x(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function R(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}},{"./ucs2length":9,"fast-deep-equal":41}],11:[function(e,r,t){"use strict";var l=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var a,s=r[t].split("/"),o=e;for(a=1;a<s.length;a++)o=o[s[a]];for(a=0;a<l.length;a++){var i=l[a],n=o[i];n&&(o[i]={anyOf:[n,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})}}return e}},{}],12:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var f="maximum"==r,p=f?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.$data&&m&&m.$data,g=f?"<":">",y=f?">":"<",P=void 0;if(v){var E=e.util.getData(m.$data,i,e.dataPathArr),w="exclusive"+o,S="exclType"+o,b="exclIsNumber"+o,_="' + "+(R="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+E+"; ";var F;P=p;(F=F||[]).push(s+=" var "+w+"; var "+S+" = typeof "+(E="schemaExcl"+o)+"; if ("+S+" != 'boolean' && "+S+" != 'undefined' && "+S+" != 'number') { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var x=s;s=F.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+S+" == 'number' ? ( ("+w+" = "+a+" === undefined || "+E+" "+g+"= "+a+") ? "+h+" "+y+"= "+E+" : "+h+" "+y+" "+a+" ) : ( ("+w+" = "+E+" === true) ? "+h+" "+y+"= "+a+" : "+h+" "+y+" "+a+" ) || "+h+" !== "+h+") { var op"+o+" = "+w+" ? '"+g+"' : '"+g+"='; ",void 0===n&&(u=e.errSchemaPath+"/"+(P=p),a=E,d=v)}else{_=g;if((b="number"==typeof m)&&d){var R="'"+_+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+g+"= "+a+" ? "+h+" "+y+"= "+m+" : "+h+" "+y+" "+a+" ) || "+h+" !== "+h+") { "}else{b&&void 0===n?(w=!0,u=e.errSchemaPath+"/"+(P=p),a=m,y+="="):(b&&(a=Math[f?"min":"max"](m,n)),m===(!b||a)?(w=!0,u=e.errSchemaPath+"/"+(P=p),y+="="):(w=!1,_+="="));R="'"+_+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+h+" "+y+" "+a+" || "+h+" !== "+h+") { "}}P=P||r,(F=F||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+R+", limit: "+a+", exclusive: "+w+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+_+" ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";x=s;return s=F.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c&&(s+=" else { "),s}},{}],13:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || ");var f=r,p=p||[];p.push(s+=" "+h+".length "+("maxItems"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"fewer",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+h+".length ":" ucs2length("+h+") ";var f=r,p=p||[];p.push(s+=" "+("maxLength"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || ");var f=r,p=p||[];p.push(s+=" Object.keys("+h+").length "+("maxProperties"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(f||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"fewer",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),u="";l.level++;var c="valid"+l.level,h=l.baseId,d=!0,f=s;if(f)for(var p,m=-1,v=f.length-1;m<v;)p=f[m+=1],e.util.schemaHasRules(p,e.RULES.all)&&(d=!1,l.schema=p,l.schemaPath=o+"["+m+"]",l.errSchemaPath=i+"/"+m,a+=" "+e.validate(l)+" ",l.baseId=h,n&&(a+=" if ("+c+") { ",u+="}"));return n&&(a+=d?" if (true) { ":" "+u.slice(0,-1)+" "),a=e.util.cleanUpCode(a)}},{}],17:[function(e,r,t){"use strict";r.exports=function(r,e,t){var a=" ",s=r.level,o=r.dataLevel,i=r.schema[e],n=r.schemaPath+r.util.getProperty(e),l=r.errSchemaPath+"/"+e,u=!r.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,f=r.util.copy(r),p="";f.level++;var m="valid"+f.level;if(i.every(function(e){return r.util.schemaHasRules(e,r.RULES.all)})){var v=f.baseId;a+=" var "+d+" = errors; var "+h+" = false; ";var g=r.compositeRule;r.compositeRule=f.compositeRule=!0;var y=i;if(y)for(var P,E=-1,w=y.length-1;E<w;)P=y[E+=1],f.schema=P,f.schemaPath=n+"["+E+"]",f.errSchemaPath=l+"/"+E,a+=" "+r.validate(f)+" ",f.baseId=v,a+=" "+h+" = "+h+" || "+m+"; if (!"+h+") { ",p+="}";r.compositeRule=f.compositeRule=g,a+=" "+p+" if (!"+h+") { var err = ",!1!==r.createErrors?(a+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+r.errorPath+" , schemaPath: "+r.util.toQuotedString(l)+" , params: {} ",!1!==r.opts.messages&&(a+=" , message: 'should match some schema in anyOf' "),r.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+r.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!r.compositeRule&&u&&(a+=r.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",r.opts.allErrors&&(a+=" } "),a=r.util.cleanUpCode(a)}else u&&(a+=" if (true) { ");return a}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.errSchemaPath+"/"+r,o=e.util.toQuotedString(e.schema[r]);return!0===e.opts.$comment?a+=" console.log("+o+");":"function"==typeof e.opts.$comment&&(a+=" self._opts.$comment("+o+", "+e.util.toQuotedString(s)+", validate.root.schema);"),a}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; "),d||(a+=" var schema"+s+" = validate.schema"+n+";");var f=f||[];f.push(a+="var "+h+" = equal("+c+", schema"+s+"); if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValue: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var p=a;return a=f.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,f=e.util.copy(e);f.level++;var p="valid"+f.level,m="i"+s,v=f.dataLevel=e.dataLevel+1,g="data"+v,y=e.baseId,P=e.util.schemaHasRules(i,e.RULES.all);if(a+="var "+d+" = errors;var "+h+";",P){var E=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+p+" = false; for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var w=c+"["+m+"]";f.dataPathArr[v]=m;var S=e.validate(f);f.baseId=y,e.util.varOccurences(S,g)<2?a+=" "+e.util.varReplace(S,g,w)+" ":a+=" var "+g+" = "+w+"; "+S+" ",a+=" if ("+p+") break; } ",e.compositeRule=f.compositeRule=E,a+=" if (!"+p+") {"}else a+=" if ("+c+".length == 0) {";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var _=a;return a=b.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",P&&(a+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],u=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,d="data"+(n||""),f="valid"+i,p="errs__"+i,m=e.opts.$data&&l&&l.$data;s=m?(o+=" var schema"+i+" = "+e.util.getData(l.$data,n,e.dataPathArr)+"; ","schema"+i):l;var v,g,y,P,E,w=this,S="definition"+i,b=w.definition,_="";if(m&&b.$data){var F=b.validateSchema;o+=" var "+S+" = RULES.custom['"+r+"'].definition; var "+(E="keywordValidate"+i)+" = "+S+".validate;"}else{if(!(P=e.useCustomRule(w,l,e.schema,e)))return;s="validate.schema"+u,E=P.code,v=b.compile,g=b.inline,y=b.macro}var x=E+".errors",R="i"+i,$="ruleErr"+i,D=b.async;if(D&&!e.async)throw new Error("async keyword in sync schema");if(g||y||(o+=x+" = null;"),o+="var "+p+" = errors;var "+f+";",m&&b.$data&&(_+="}",o+=" if ("+s+" === undefined) { "+f+" = true; } else { ",F&&(_+="}",o+=" "+f+" = "+S+".validateSchema("+s+"); if ("+f+") { ")),g)o+=b.statements?" "+P.validate+" ":" "+f+" = "+P.validate+"; ";else if(y){var j=e.util.copy(e);_="";j.level++;var O="valid"+j.level;j.schema=P.validate,j.schemaPath="";var I=e.compositeRule;e.compositeRule=j.compositeRule=!0;var A=e.validate(j).replace(/validate\.schema/g,E);e.compositeRule=j.compositeRule=I,o+=" "+A}else{(z=z||[]).push(o),o="",o+=" "+E+".call( ",o+=e.opts.passContext?"this":"self",o+=v||!1===b.schema?" , "+d+" ":" , "+s+" , "+d+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var C=n?"data"+(n-1||""):"parentData",k=n?e.dataPathArr[n]:"parentDataProperty",L=o+=" , "+C+" , "+k+" , rootData ) ";o=z.pop(),!1===b.errors?(o+=" "+f+" = ",D&&(o+="await "),o+=L+"; "):o+=D?" var "+(x="customErrors"+i)+" = null; try { "+f+" = await "+L+"; } catch (e) { "+f+" = false; if (e instanceof ValidationError) "+x+" = e.errors; else throw e; } ":" "+x+" = null; "+f+" = "+L+"; "}if(b.modifying&&(o+=" if ("+C+") "+d+" = "+C+"["+k+"];"),o+=""+_,b.valid)h&&(o+=" if (true) { ");else{var z;o+=" if ( ",void 0===b.valid?(o+=" !",o+=y?""+O:""+f):o+=" "+!b.valid+" ",a=w.keyword,(z=z||[]).push(o+=") { "),(z=z||[]).push(o=""),o="",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var T=o;o=z.pop();var N=o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+T+"]); ":" validate.errors = ["+T+"]; return false; ":" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";o=z.pop(),g?b.errors?"full"!=b.errors&&(o+=" for (var "+R+"="+p+"; "+R+"<errors; "+R+"++) { var "+$+" = vErrors["+R+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+d+"; "),o+=" } "):!1===b.errors?o+=" "+N+" ":(o+=" if ("+p+" == errors) { "+N+" } else { for (var "+R+"="+p+"; "+R+"<errors; "+R+"++) { var "+$+" = vErrors["+R+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+$+".schemaPath === undefined) { "+$+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+d+"; "),o+=" } } "):y?(o+=" var err = ",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ",o+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(o+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===b.errors?o+=" "+N+" ":(o+=" if (Array.isArray("+x+")) { if (vErrors === null) vErrors = "+x+"; else vErrors = vErrors.concat("+x+"); errors = vErrors.length; for (var "+R+"="+p+"; "+R+"<errors; "+R+"++) { var "+$+" = vErrors["+R+"]; if ("+$+".dataPath === undefined) "+$+".dataPath = (dataPath || '') + "+e.errorPath+"; "+$+'.schemaPath = "'+c+'"; ',e.opts.verbose&&(o+=" "+$+".schema = "+s+"; "+$+".data = "+d+"; "),o+=" } } else { "+N+" } "),o+=" } ",h&&(o+=" else { ")}return o}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m={},v={},g=e.opts.ownProperties;for(w in i){var y=i[w],P=Array.isArray(y)?v:m;P[w]=y}a+="var "+h+" = errors;";var E=e.errorPath;for(var w in a+="var missing"+s+";",v)if((P=v[w]).length){if(a+=" if ( "+c+e.util.getProperty(w)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(w)+"') "),u){a+=" && ( ";var S=P;if(S)for(var b=-1,_=S.length-1;b<_;){j=S[b+=1],b&&(a+=" || "),a+=" ( ( "+(C=c+(A=e.util.getProperty(j)))+" === undefined ",g&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?j:A)+") ) "}a+=")) { ";var F="missing"+s,x="' + "+F+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,F,!0):E+" + "+F);var R=R||[];R.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var $=a;a=R.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+$+"]); ":" validate.errors = ["+$+"]; return false; ":" var err = "+$+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{a+=" ) { ";var D=P;if(D)for(var j,O=-1,I=D.length-1;O<I;){j=D[O+=1];var A=e.util.getProperty(j),C=(x=e.util.escapeQuotes(j),c+A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,j,e.opts.jsonPointers)),a+=" if ( "+C+" === undefined ",g&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}a+=" } ",u&&(f+="}",a+=" else { ")}e.errorPath=E;var k=d.baseId;for(var w in m){e.util.schemaHasRules(y=m[w],e.RULES.all)&&(a+=" "+p+" = true; if ( "+c+e.util.getProperty(w)+" !== undefined ",g&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(w)+"') "),a+=") { ",d.schema=y,d.schemaPath=n+e.util.getProperty(w),d.errSchemaPath=l+"/"+e.util.escapeFragment(w),a+=" "+e.validate(d)+" ",d.baseId=k,a+=" } ",u&&(a+=" if ("+p+") { ",f+="}"))}return u&&(a+=" "+f+" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var f="i"+s,p="schema"+s;d||(a+=" var "+p+" = validate.schema"+n+";"),a+="var "+h+";",d&&(a+=" if (schema"+s+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+s+")) "+h+" = false; else {"),a+=h+" = false;for (var "+f+"=0; "+f+"<"+p+".length; "+f+"++) if (equal("+c+", "+p+"["+f+"])) { "+h+" = true; break; }",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var v=a;return a=m.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||"");if(!1===e.opts.format)return u&&(a+=" if (true) { "),a;var h,d=e.opts.$data&&i&&i.$data;h=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var f=e.opts.unknownFormats,p=Array.isArray(f);if(d){a+=" var "+(m="format"+s)+" = formats["+h+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(g="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",d&&(a+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),a+=" (","ignore"!=f&&(a+=" ("+h+" && !"+m+" ",p&&(a+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),a+=") || "),a+=" ("+m+" && "+g+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? await "+m+"("+c+") : "+m+"("+c+")) ":" "+m+"("+c+") ",a+=" : "+m+".test("+c+"))))) {"}else{var m;if(!(m=e.formats[i])){if("ignore"==f)return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(a+=" if (true) { "),a;if(p&&0<=f.indexOf(i))return u&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,g=(v="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(v){var y=!0===m.async;m=m.validate}if(g!=t)return u&&(a+=" if (true) { "),a;if(y){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(P="formats"+e.util.getProperty(i)+".validate")+"("+c+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+c+") ":" "+P+".test("+c+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=d?""+h:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+h+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var w=a;return a=E.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u&&(a+=" else { "),a}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,f=e.util.copy(e);f.level++;var p="valid"+f.level,m=e.schema.then,v=e.schema.else,g=void 0!==m&&e.util.schemaHasRules(m,e.RULES.all),y=void 0!==v&&e.util.schemaHasRules(v,e.RULES.all),P=f.baseId;if(g||y){var E;f.createErrors=!1,f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+d+" = errors; var "+h+" = true; ";var w=e.compositeRule;e.compositeRule=f.compositeRule=!0,a+=" "+e.validate(f)+" ",f.baseId=P,f.createErrors=!0,a+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.compositeRule=f.compositeRule=w,g?(a+=" if ("+p+") { ",f.schema=e.schema.then,f.schemaPath=e.schemaPath+".then",f.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(f)+" ",f.baseId=P,a+=" "+h+" = "+p+"; ",g&&y?a+=" var "+(E="ifClause"+s)+" = 'then'; ":E="'then'",a+=" } ",y&&(a+=" else { ")):a+=" if (!"+p+") { ",y&&(f.schema=e.schema.else,f.schemaPath=e.schemaPath+".else",f.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(f)+" ",f.baseId=P,a+=" "+h+" = "+p+"; ",g&&y?a+=" var "+(E="ifClause"+s)+" = 'else'; ":E="'else'",a+=" } "),a+=" if (!"+h+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match \"' + "+E+" + '\" schema' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } ",u&&(a+=" else { "),a=e.util.cleanUpCode(a)}else u&&(a+=" if (true) { ");return a}},{}],26:[function(e,r,t){"use strict";r.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":12,"./_limitItems":13,"./_limitLength":14,"./_limitProperties":15,"./allOf":16,"./anyOf":17,"./comment":18,"./const":19,"./contains":20,"./dependencies":22,"./enum":23,"./format":24,"./if":25,"./items":27,"./multipleOf":28,"./not":29,"./oneOf":30,"./pattern":31,"./properties":32,"./propertyNames":33,"./ref":34,"./required":35,"./uniqueItems":36,"./validate":37}],27:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level,v="i"+s,g=f.dataLevel=e.dataLevel+1,y="data"+g,P=e.baseId;if(a+="var "+d+" = errors;var "+h+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+h+" = "+c+".length <= "+i.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems";var S=S||[];S.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var b=a;a=S.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=w,u&&(p+="}",a+=" else { ")}var _=i;if(_)for(var F,x=-1,R=_.length-1;x<R;)if(F=_[x+=1],e.util.schemaHasRules(F,e.RULES.all)){a+=" "+m+" = true; if ("+c+".length > "+x+") { ";var $=c+"["+x+"]";f.schema=F,f.schemaPath=n+"["+x+"]",f.errSchemaPath=l+"/"+x,f.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),f.dataPathArr[g]=x;var D=e.validate(f);f.baseId=P,e.util.varOccurences(D,y)<2?a+=" "+e.util.varReplace(D,y,$)+" ":a+=" var "+y+" = "+$+"; "+D+" ",a+=" } ",u&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){f.schema=E,f.schemaPath=e.schemaPath+".additionalItems",f.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+c+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+c+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=c+"["+v+"]";f.dataPathArr[g]=v;D=e.validate(f);f.baseId=P,e.util.varOccurences(D,y)<2?a+=" "+e.util.varReplace(D,y,$)+" ":a+=" var "+y+" = "+$+"; "+D+" ",u&&(a+=" if (!"+m+") break; "),a+=" } } ",u&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+c+".length; "+v+"++) { ",f.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);$=c+"["+v+"]";f.dataPathArr[g]=v;D=e.validate(f);f.baseId=P,e.util.varOccurences(D,y)<2?a+=" "+e.util.varReplace(D,y,$)+" ":a+=" var "+y+" = "+$+"; "+D+" ",u&&(a+=" if (!"+m+") break; "),a+=" }"}return u&&(a+=" "+p+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="var division"+o+";if (",d&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+h+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",d&&(s+=" ) ");var f=f||[];f.push(s+=" ) { "),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var p=s;return s=f.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+h+" = errors; ";var p,m=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1,d.opts.allErrors&&(p=d.opts.allErrors,d.opts.allErrors=!1),a+=" "+e.validate(d)+" ",d.createErrors=!0,p&&(d.opts.allErrors=p),e.compositeRule=d.compositeRule=m;var v=v||[];v.push(a+=" if ("+f+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var g=a;a=v.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ");return a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,f=e.util.copy(e),p="";f.level++;var m="valid"+f.level,v=f.baseId,g="prevValid"+s,y="passingSchemas"+s;a+="var "+d+" = errors , "+g+" = false , "+h+" = false , "+y+" = null; ";var P=e.compositeRule;e.compositeRule=f.compositeRule=!0;var E=i;if(E)for(var w,S=-1,b=E.length-1;S<b;)w=E[S+=1],e.util.schemaHasRules(w,e.RULES.all)?(f.schema=w,f.schemaPath=n+"["+S+"]",f.errSchemaPath=l+"/"+S,a+=" "+e.validate(f)+" ",f.baseId=v):a+=" var "+m+" = true; ",S&&(a+=" if ("+m+" && "+g+") { "+h+" = false; "+y+" = ["+y+", "+S+"]; } else { ",p+="}"),a+=" if ("+m+") { "+h+" = "+g+" = true; "+y+" = "+S+"; }";return e.compositeRule=f.compositeRule=P,a+=p+"if (!"+h+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+y+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var f=d?"(new RegExp("+a+"))":e.usePattern(n);s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'string') || ");var p=p||[];p.push(s+=" !"+f+".test("+h+") ) { "),s="",!1!==e.createErrors?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",s+=d?""+a:""+e.util.toQuotedString(n),s+=" } ",!1!==e.opts.messages&&(s+=" , message: 'should match pattern \"",s+=d?"' + "+a+" + '":""+e.util.escapeQuotes(n),s+="\"' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+e.util.toQuotedString(n),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e),f="";d.level++;var p="valid"+d.level,m="key"+s,v="idx"+s,g=d.dataLevel=e.dataLevel+1,y="data"+g,P="dataProperties"+s,E=Object.keys(i||{}),w=e.schema.patternProperties||{},S=Object.keys(w),b=e.schema.additionalProperties,_=E.length||S.length,F=!1===b,x="object"==typeof b&&Object.keys(b).length,R=e.opts.removeAdditional,$=F||x||R,D=e.opts.ownProperties,j=e.baseId,O=e.schema.required;if(O&&(!e.opts.$data||!O.$data)&&O.length<e.opts.loopRequired)var I=e.util.toHash(O);if(a+="var "+h+" = errors;var "+p+" = true;",D&&(a+=" var "+P+" = undefined;"),$){if(a+=D?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+v+"=0; "+v+"<"+P+".length; "+v+"++) { var "+m+" = "+P+"["+v+"]; ":" for (var "+m+" in "+c+") { ",_){if(a+=" var isAdditional"+s+" = !(false ",E.length)if(8<E.length)a+=" || validate.schema"+n+".hasOwnProperty("+m+") ";else{var A=E;if(A)for(var C=-1,k=A.length-1;C<k;)J=A[C+=1],a+=" || "+m+" == "+e.util.toQuotedString(J)+" "}if(S.length){var L=S;if(L)for(var z=-1,T=L.length-1;z<T;)ae=L[z+=1],a+=" || "+e.usePattern(ae)+".test("+m+") "}a+=" ); if (isAdditional"+s+") { "}if("all"==R)a+=" delete "+c+"["+m+"]; ";else{var N=e.errorPath,q="' + "+m+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers)),F)if(R)a+=" delete "+c+"["+m+"]; ";else{var Q=l;l=e.errSchemaPath+"/additionalProperties",(ee=ee||[]).push(a+=" "+p+" = false; "),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { additionalProperty: '"+q+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is an invalid additional property":"should NOT have additional properties",a+="' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var U=a;a=ee.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=Q,u&&(a+=" break; ")}else if(x)if("failing"==R){a+=" var "+h+" = errors; ";var V=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=b,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);var H=c+"["+m+"]";d.dataPathArr[g]=m;var M=e.validate(d);d.baseId=j,e.util.varOccurences(M,y)<2?a+=" "+e.util.varReplace(M,y,H)+" ":a+=" var "+y+" = "+H+"; "+M+" ",a+=" if (!"+p+") { errors = "+h+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+c+"["+m+"]; } ",e.compositeRule=d.compositeRule=V}else{d.schema=b,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);H=c+"["+m+"]";d.dataPathArr[g]=m;M=e.validate(d);d.baseId=j,e.util.varOccurences(M,y)<2?a+=" "+e.util.varReplace(M,y,H)+" ":a+=" var "+y+" = "+H+"; "+M+" ",u&&(a+=" if (!"+p+") break; ")}e.errorPath=N}_&&(a+=" } "),a+=" } ",u&&(a+=" if ("+p+") { ",f+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(E.length){var B=E;if(B)for(var J,Z=-1,G=B.length-1;Z<G;){if(J=B[Z+=1],e.util.schemaHasRules(ie=i[J],e.RULES.all)){var Y=e.util.getProperty(J),W=(H=c+Y,K&&void 0!==ie.default);d.schema=ie,d.schemaPath=n+Y,d.errSchemaPath=l+"/"+e.util.escapeFragment(J),d.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),d.dataPathArr[g]=e.util.toQuotedString(J);M=e.validate(d);if(d.baseId=j,e.util.varOccurences(M,y)<2){M=e.util.varReplace(M,y,H);var X=H}else{X=y;a+=" var "+y+" = "+H+"; "}if(W)a+=" "+M+" ";else{if(I&&I[J]){a+=" if ( "+X+" === undefined ",D&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+p+" = false; ";N=e.errorPath,Q=l;var ee,re=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(N,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(ee=ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+re+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";U=a;a=ee.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=Q,e.errorPath=N,a+=" } else { "}else u?(a+=" if ( "+X+" === undefined ",D&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+p+" = true; } else { "):(a+=" if ("+X+" !== undefined ",D&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+M+" } "}}u&&(a+=" if ("+p+") { ",f+="}")}}if(S.length){var te=S;if(te)for(var ae,se=-1,oe=te.length-1;se<oe;){var ie;if(ae=te[se+=1],e.util.schemaHasRules(ie=w[ae],e.RULES.all)){d.schema=ie,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),a+=D?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+v+"=0; "+v+"<"+P+".length; "+v+"++) { var "+m+" = "+P+"["+v+"]; ":" for (var "+m+" in "+c+") { ",a+=" if ("+e.usePattern(ae)+".test("+m+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);H=c+"["+m+"]";d.dataPathArr[g]=m;M=e.validate(d);d.baseId=j,e.util.varOccurences(M,y)<2?a+=" "+e.util.varReplace(M,y,H)+" ":a+=" var "+y+" = "+H+"; "+M+" ",u&&(a+=" if (!"+p+") break; "),a+=" } ",u&&(a+=" else "+p+" = true; "),a+=" } ",u&&(a+=" if ("+p+") { ",f+="}")}}}return u&&(a+=" "+f+" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e);d.level++;var f="valid"+d.level;if(a+="var "+h+" = errors;",e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l;var p="key"+s,m="idx"+s,v="i"+s,g="' + "+p+" + '",y="data"+(d.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,w=e.baseId;E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+p+" = "+P+"["+m+"]; ":" for (var "+p+" in "+c+") { ",a+=" var startErrs"+s+" = errors; ";var S=p,b=e.compositeRule;e.compositeRule=d.compositeRule=!0;var _=e.validate(d);d.baseId=w,e.util.varOccurences(_,y)<2?a+=" "+e.util.varReplace(_,y,S)+" ":a+=" var "+y+" = "+S+"; "+_+" ",e.compositeRule=d.compositeRule=b,a+=" if (!"+f+") { for (var "+v+"=startErrs"+s+"; "+v+"<errors; "+v+"++) { vErrors["+v+"].propertyName = "+p+"; } var err = ",!1!==e.createErrors?(a+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { propertyName: '"+g+"' } ",!1!==e.opts.messages&&(a+=" , message: 'property name \\'"+g+"\\' is invalid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),u&&(a+=" break; "),a+=" } }"}return u&&(a+=" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.dataLevel,n=e.schema[r],l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),h="valid"+e.level;if("#"==n||"#/"==n)s=e.isRoot?(a=e.async,"validate"):(a=!0===e.root.schema.$async,"root.refVal[0]");else{var d=e.resolveRef(e.baseId,n,e.isRoot);if(void 0===d){var f=e.MissingRefError.message(e.baseId,n);if("fail"==e.opts.missingRefs){e.logger.error(f),(g=g||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(n)+"' } ",!1!==e.opts.messages&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(n)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(n)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),o+=" } "):o+=" {} ";var p=o;o=g.pop(),o+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,n,f);e.logger.warn(f),u&&(o+=" if (true) { ")}}else if(d.inline){var m=e.util.copy(e);m.level++;var v="valid"+m.level;m.schema=d.schema,m.schemaPath="",m.errSchemaPath=n,o+=" "+e.validate(m).replace(/validate\.schema/g,d.code)+" ",u&&(o+=" if ("+v+") { ")}else a=!0===d.$async||e.async&&!1!==d.$async,s=d.code}if(s){var g;(g=g||[]).push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var y=o+=" , "+(i?"data"+(i-1||""):"parentData")+" , "+(i?e.dataPathArr[i]:"parentDataProperty")+", rootData) ";if(o=g.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(o+=" var "+h+"; "),o+=" try { await "+y+"; ",u&&(o+=" "+h+" = true; "),o+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(o+=" "+h+" = false; "),o+=" } ",u&&(o+=" if ("+h+") { ")}else o+=" if (!"+y+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",u&&(o+=" else { ")}return o}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var f="schema"+s;if(!d)if(i.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],m=i;if(m)for(var v,g=-1,y=m.length-1;g<y;){v=m[g+=1];var P=e.schema.properties[v];P&&e.util.schemaHasRules(P,e.RULES.all)||(p[p.length]=v)}}else p=i;if(d||p.length){var E=e.errorPath,w=d||e.opts.loopRequired<=p.length,S=e.opts.ownProperties;if(u)if(a+=" var missing"+s+"; ",w){d||(a+=" var "+f+" = validate.schema"+n+"; ");var b="' + "+(D="schema"+s+"["+(x="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,D,e.opts.jsonPointers)),a+=" var "+h+" = true; ",d&&(a+=" if (schema"+s+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+s+")) "+h+" = false; else {"),a+=" for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { "+h+" = "+c+"["+f+"["+x+"]] !== undefined ",S&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", "+f+"["+x+"]) "),a+="; if (!"+h+") break; } ",d&&(a+=" } "),($=$||[]).push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var _=a;a=$.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var F=p;if(F)for(var x=-1,R=F.length-1;x<R;){O=F[x+=1],x&&(a+=" || "),a+=" ( ( "+(k=c+(C=e.util.getProperty(O)))+" === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:C)+") ) "}a+=") { ";var $;b="' + "+(D="missing"+s)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,D,!0):E+" + "+D),($=$||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";_=a;a=$.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else if(w){d||(a+=" var "+f+" = validate.schema"+n+"; ");var D;b="' + "+(D="schema"+s+"["+(x="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,D,e.opts.jsonPointers)),d&&(a+=" if ("+f+" && !Array.isArray("+f+")) { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+f+" !== undefined) { "),a+=" for (var "+x+" = 0; "+x+" < "+f+".length; "+x+"++) { if ("+c+"["+f+"["+x+"]] === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", "+f+"["+x+"]) "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",d&&(a+=" } ")}else{var j=p;if(j)for(var O,I=-1,A=j.length-1;I<A;){O=j[I+=1];var C=e.util.getProperty(O),k=(b=e.util.escapeQuotes(O),c+C);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,O,e.opts.jsonPointers)),a+=" if ( "+k+" === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=E}else u&&(a+=" if (true) {");return a}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d="valid"+o,f=e.opts.$data&&n&&n.$data;if(a=f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,(n||f)&&!1!==e.opts.uniqueItems){f&&(s+=" var "+d+"; if ("+a+" === false || "+a+" === undefined) "+d+" = true; else if (typeof "+a+" != 'boolean') "+d+" = false; else { "),s+=" var i = "+h+".length , "+d+" = true , j; if (i > 1) { ";var p=e.schema.items&&e.schema.items.type,m=Array.isArray(p);if(!p||"object"==p||"array"==p||m&&(0<=p.indexOf("object")||0<=p.indexOf("array")))s+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } ";else s+=" var itemIndices = {}, item; for (;i--;) { var item = "+h+"[i]; ",s+=" if ("+e.util["checkDataType"+(m?"s":"")](p,"item",!0)+") continue; ",m&&(s+=" if (typeof item == 'string') item = '\"' + item; "),s+=" if (typeof itemIndices[item] == 'number') { "+d+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";s+=" } ",f&&(s+=" } ");var v=v||[];v.push(s+=" if (!"+d+") { "),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=f?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var g=s;s=v.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+g+"]); ":" validate.errors = ["+g+"]; return false; ":" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c&&(s+=" else { ")}else c&&(s+=" if (true) { ");return s}},{}],37:[function(e,r,t){"use strict";r.exports=function(a,e,r){var t="",s=!0===a.schema.$async,o=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),i=a.self._getId(a.schema);if(a.isTop&&(t+=" var validate = ",s&&(a.async=!0,t+="async "),t+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",i&&(a.opts.sourceCode||a.opts.processCode)&&(t+=" /*# sourceURL="+i+" */ ")),"boolean"==typeof a.schema||!o&&!a.schema.$ref){var n=a.level,l=a.dataLevel,u=a.schema[e="false schema"],c=a.schemaPath+a.util.getProperty(e),h=a.errSchemaPath+"/"+e,d=!a.opts.allErrors,f="data"+(l||""),p="valid"+n;if(!1===a.schema){a.isTop?d=!0:t+=" var "+p+" = false; ",(B=B||[]).push(t),t="",!1!==a.createErrors?(t+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: {} ",!1!==a.opts.messages&&(t+=" , message: 'boolean schema is false' "),a.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";var m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else t+=a.isTop?s?" return data; ":" validate.errors = null; return true; ":" var "+p+" = true; ";return a.isTop&&(t+=" }; return validate; "),t}if(a.isTop){var v=a.isTop;n=a.level=0,l=a.dataLevel=0,f="data";a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],t+=" var vErrors = null; ",t+=" var errors = 0; ",t+=" if (rootData === undefined) rootData = data; "}else{n=a.level,f="data"+((l=a.dataLevel)||"");if(i&&(a.baseId=a.resolve.url(a.baseId,i)),s&&!a.async)throw new Error("async schema in sync schema");t+=" var errs_"+n+" = errors;"}p="valid"+n,d=!a.opts.allErrors;var g="",y="",P=a.schema.type,E=Array.isArray(P);if(P&&a.opts.nullable&&!0===a.schema.nullable&&(E?-1==P.indexOf("null")&&(P=P.concat("null")):"null"!=P&&(P=[P,"null"],E=!0)),E&&1==P.length&&(P=P[0],E=!1),a.schema.$ref&&o){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(o=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(t+=" "+a.RULES.all.$comment.code(a,"$comment")),P){if(a.opts.coerceTypes)var w=a.util.coerceToTypes(a.opts.coerceTypes,P);var S=a.RULES.types[P];if(w||E||!0===S||S&&!J(S)){c=a.schemaPath+".type",h=a.errSchemaPath+"/type",c=a.schemaPath+".type",h=a.errSchemaPath+"/type";if(t+=" if ("+a.util[E?"checkDataTypes":"checkDataType"](P,f,!0)+") { ",w){var b="dataType"+n,_="coerced"+n;t+=" var "+b+" = typeof "+f+"; ","array"==a.opts.coerceTypes&&(t+=" if ("+b+" == 'object' && Array.isArray("+f+")) "+b+" = 'array'; "),t+=" var "+_+" = undefined; ";var F="",x=w;if(x)for(var R,$=-1,D=x.length-1;$<D;)R=x[$+=1],$&&(t+=" if ("+_+" === undefined) { ",F+="}"),"array"==a.opts.coerceTypes&&"array"!=R&&(t+=" if ("+b+" == 'array' && "+f+".length == 1) { "+_+" = "+f+" = "+f+"[0]; "+b+" = typeof "+f+"; } "),"string"==R?t+=" if ("+b+" == 'number' || "+b+" == 'boolean') "+_+" = '' + "+f+"; else if ("+f+" === null) "+_+" = ''; ":"number"==R||"integer"==R?(t+=" if ("+b+" == 'boolean' || "+f+" === null || ("+b+" == 'string' && "+f+" && "+f+" == +"+f+" ","integer"==R&&(t+=" && !("+f+" % 1)"),t+=")) "+_+" = +"+f+"; "):"boolean"==R?t+=" if ("+f+" === 'false' || "+f+" === 0 || "+f+" === null) "+_+" = false; else if ("+f+" === 'true' || "+f+" === 1) "+_+" = true; ":"null"==R?t+=" if ("+f+" === '' || "+f+" === 0 || "+f+" === false) "+_+" = null; ":"array"==a.opts.coerceTypes&&"array"==R&&(t+=" if ("+b+" == 'string' || "+b+" == 'number' || "+b+" == 'boolean' || "+f+" == null) "+_+" = ["+f+"]; ");(B=B||[]).push(t+=" "+F+" if ("+_+" === undefined) { "),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ";var j=l?"data"+(l-1||""):"parentData";t+=" "+f+" = "+_+"; ",l||(t+="if ("+j+" !== undefined)"),t+=" "+j+"["+(l?a.dataPathArr[l]:"parentDataProperty")+"] = "+_+"; } "}else{(B=B||[]).push(t),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}t+=" } "}}if(a.schema.$ref&&!o)t+=" "+a.RULES.all.$ref.code(a,"$ref")+" ",d&&(t+=" } if (errors === ",t+=v?"0":"errs_"+n,t+=") { ",y+="}");else{var O=a.RULES;if(O)for(var I=-1,A=O.length-1;I<A;)if(J(S=O[I+=1])){if(S.type&&(t+=" if ("+a.util.checkDataType(S.type,f)+") { "),a.opts.useDefaults&&!a.compositeRule)if("object"==S.type&&a.schema.properties){u=a.schema.properties;var C=Object.keys(u);if(C)for(var k,L=-1,z=C.length-1;L<z;){if(void 0!==(N=u[k=C[L+=1]]).default)t+=" if ("+(Q=f+a.util.getProperty(k))+" === undefined ","empty"==a.opts.useDefaults&&(t+=" || "+Q+" === null || "+Q+" === '' "),t+=" ) "+Q+" = ",t+="shared"==a.opts.useDefaults?" "+a.useDefault(N.default)+" ":" "+JSON.stringify(N.default)+" ",t+="; "}}else if("array"==S.type&&Array.isArray(a.schema.items)){var T=a.schema.items;if(T){$=-1;for(var N,q=T.length-1;$<q;){var Q;if(void 0!==(N=T[$+=1]).default)t+=" if ("+(Q=f+"["+$+"]")+" === undefined ","empty"==a.opts.useDefaults&&(t+=" || "+Q+" === null || "+Q+" === '' "),t+=" ) "+Q+" = ",t+="shared"==a.opts.useDefaults?" "+a.useDefault(N.default)+" ":" "+JSON.stringify(N.default)+" ",t+="; "}}}var U=S.rules;if(U)for(var V,H=-1,M=U.length-1;H<M;)if(Z(V=U[H+=1])){var K=V.code(a,V.keyword,S.type);K&&(t+=" "+K+" ",d&&(g+="}"))}if(d&&(t+=" "+g+" ",g=""),S.type&&(t+=" } ",P&&P===S.type&&!w)){var B;c=a.schemaPath+".type",h=a.errSchemaPath+"/type";(B=B||[]).push(t+=" else { "),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+f+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } "}d&&(t+=" if (errors === ",t+=v?"0":"errs_"+n,t+=") { ",y+="}")}}function J(e){for(var r=e.rules,t=0;t<r.length;t++)if(Z(r[t]))return!0}function Z(e){return void 0!==a.schema[e.keyword]||e.implements&&function(e){for(var r=e.implements,t=0;t<r.length;t++)if(void 0!==a.schema[r[t]])return!0}(e)}return d&&(t+=" "+y+" "),v?(s?(t+=" if (errors === 0) return data; ",t+=" else throw new ValidationError(vErrors); "):(t+=" validate.errors = vErrors; ",t+=" return errors === 0; "),t+=" }; return validate;"):t+=" var "+p+" = errors === errs_"+n+";",t=a.util.cleanUpCode(t),v&&(t=a.util.finalCleanUpCode(t,s)),t}},{}],38:[function(e,r,t){"use strict";var c=/^[a-z_$][a-z0-9_$-]*$/i,h=e("./dotjs/custom");r.exports={add:function(e,r){var n=this.RULES;if(n.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!c.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){if(r.macro&&void 0!==r.valid)throw new Error('"valid" option cannot be used with macro keywords');var t=r.type;if(Array.isArray(t)){var a,s=t.length;for(a=0;a<s;a++)u(t[a]);for(a=0;a<s;a++)l(e,t[a],r)}else t&&u(t),l(e,t,r);var o=!0===r.$data&&this._opts.$data;if(o&&!r.validate)throw new Error('$data support: "validate" function is not defined');var i=r.metaSchema;i&&(o&&(i={anyOf:[i,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}),r.validateSchema=this.compile(i,!0))}function l(e,r,t){for(var a,s=0;s<n.length;s++){var o=n[s];if(o.type==r){a=o;break}}a||n.push(a={type:r,rules:[]});var i={keyword:e,definition:t,custom:!0,code:h,implements:t.implements};a.rules.push(i),n.custom[e]=i}function u(e){if(!n.types[e])throw new Error("Unknown type "+e)}return n.keywords[e]=n.all[e]=!0,this},get:function(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1},remove:function(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}return this}}},{"./dotjs/custom":21}],39:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],40:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}},{}],41:[function(e,r,t){"use strict";var f=Array.isArray,p=Object.keys,m=Object.prototype.hasOwnProperty;r.exports=function e(r,t){if(r===t)return!0;if(r&&t&&"object"==typeof r&&"object"==typeof t){var a,s,o,i=f(r),n=f(t);if(i&&n){if((s=r.length)!=t.length)return!1;for(a=s;0!=a--;)if(!e(r[a],t[a]))return!1;return!0}if(i!=n)return!1;var l=r instanceof Date,u=t instanceof Date;if(l!=u)return!1;if(l&&u)return r.getTime()==t.getTime();var c=r instanceof RegExp,h=t instanceof RegExp;if(c!=h)return!1;if(c&&h)return r.toString()==t.toString();var d=p(r);if((s=d.length)!==p(t).length)return!1;for(a=s;0!=a--;)if(!m.call(t,d[a]))return!1;for(a=s;0!=a--;)if(!e(r[o=d[a]],t[o]))return!1;return!0}return r!=r&&t!=t}},{}],42:[function(e,r,t){"use strict";r.exports=function(e,r){r||(r={}),"function"==typeof r&&(r={cmp:r});var a,l="boolean"==typeof r.cycles&&r.cycles,u=r.cmp&&(a=r.cmp,function(t){return function(e,r){return a({key:e,value:t[e]},{key:r,value:t[r]})}}),c=[];return function e(r){if(r&&r.toJSON&&"function"==typeof r.toJSON&&(r=r.toJSON()),void 0!==r){if("number"==typeof r)return isFinite(r)?""+r:"null";if("object"!=typeof r)return JSON.stringify(r);var t,a;if(Array.isArray(r)){for(a="[",t=0;t<r.length;t++)t&&(a+=","),a+=e(r[t])||"null";return a+"]"}if(null===r)return"null";if(-1!==c.indexOf(r)){if(l)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=c.push(r)-1,o=Object.keys(r).sort(u&&u(r));for(a="",t=0;t<o.length;t++){var i=o[t],n=e(r[i]);n&&(a&&(a+=","),a+=JSON.stringify(i)+":"+n)}return c.splice(s,1),"{"+a+"}"}}(e)}},{}],43:[function(e,r,t){"use strict";var m=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),function e(r,t,a,s,o,i,n,l,u,c){if(s&&"object"==typeof s&&!Array.isArray(s)){for(var h in t(s,o,i,n,l,u,c),s){var d=s[h];if(Array.isArray(d)){if(h in m.arrayKeywords)for(var f=0;f<d.length;f++)e(r,t,a,d[f],o+"/"+h+"/"+f,i,o,h,s,f)}else if(h in m.propsKeywords){if(d&&"object"==typeof d)for(var p in d)e(r,t,a,d[p],o+"/"+h+"/"+p.replace(/~/g,"~0").replace(/\//g,"~1"),i,o,h,s,p)}else(h in m.keywords||r.allKeys&&!(h in m.skipKeywords))&&e(r,t,a,d,o+"/"+h,i,o,h,s)}a(s,o,i,n,l,u,c)}}(r,"function"==typeof(t=r.cb||t)?t:t.pre||function(){},t.post||function(){},e,"",e)};m.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],44:[function(e,r,t){var a;a=this,function(e){"use strict";function C(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(1<r.length){r[0]=r[0].slice(0,-1);for(var a=r.length-1,s=1;s<a;++s)r[s]=r[s].slice(1,-1);return r[a]=r[a].slice(1),r.join("")}return r[0]}function k(e){return"(?:"+e+")"}function a(e){return void 0===e?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function p(e){return e.toUpperCase()}function r(e){var r="[A-Za-z]",t="[0-9]",a=C(t,"[A-Fa-f]"),s=k(k("%[EFef]"+a+"%"+a+a+"%"+a+a)+"|"+k("%[89A-Fa-f]"+a+"%"+a+a)+"|"+k("%"+a+a)),o="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=C("[\\:\\/\\?\\#\\[\\]\\@]",o),n=e?"[\\uE000-\\uF8FF]":"[]",l=C(r,t,"[\\-\\.\\_\\~]",e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]"),u=k(r+C(r,t,"[\\+\\-\\.]")+"*"),c=k(k(s+"|"+C(l,o,"[\\:]"))+"*"),h=(k(k("25[0-5]")+"|"+k("2[0-4]"+t)+"|"+k("1"+t+t)+"|"+k("[1-9]"+t)+"|"+t),k(k("25[0-5]")+"|"+k("2[0-4]"+t)+"|"+k("1"+t+t)+"|"+k("0?[1-9]"+t)+"|0?0?"+t)),d=k(h+"\\."+h+"\\."+h+"\\."+h),f=k(a+"{1,4}"),p=k(k(f+"\\:"+f)+"|"+d),m=k([k(k(f+"\\:")+"{6}"+p),k("\\:\\:"+k(f+"\\:")+"{5}"+p),k(k(f)+"?\\:\\:"+k(f+"\\:")+"{4}"+p),k(k(k(f+"\\:")+"{0,1}"+f)+"?\\:\\:"+k(f+"\\:")+"{3}"+p),k(k(k(f+"\\:")+"{0,2}"+f)+"?\\:\\:"+k(f+"\\:")+"{2}"+p),k(k(k(f+"\\:")+"{0,3}"+f)+"?\\:\\:"+f+"\\:"+p),k(k(k(f+"\\:")+"{0,4}"+f)+"?\\:\\:"+p),k(k(k(f+"\\:")+"{0,5}"+f)+"?\\:\\:"+f),k(k(k(f+"\\:")+"{0,6}"+f)+"?\\:\\:")].join("|")),v=k(k(l+"|"+s)+"+"),g=(k(m+"\\%25"+v),k("\\["+k(k(m+k("\\%25|\\%(?!"+a+"{2})")+v)+"|"+m+"|"+k("[vV]"+a+"+\\."+C(l,o,"[\\:]")+"+"))+"\\]")),y=k(k(s+"|"+C(l,o))+"*"),P=k(g+"|"+d+"(?!"+y+")|"+y),E=k(t+"*"),w=k(k(c+"@")+"?"+P+k("\\:"+E)+"?"),S=k(s+"|"+C(l,o,"[\\:\\@]")),b=k(S+"*"),_=k(S+"+"),F=k(k(s+"|"+C(l,o,"[\\@]"))+"+"),x=k(k("\\/"+b)+"*"),R=k("\\/"+k(_+x)+"?"),$=k(F+x),D=k(_+x),j="(?!"+S+")",O=(k(x+"|"+R+"|"+$+"|"+D+"|"+j),k(k(S+"|"+C("[\\/\\?]",n))+"*")),I=k(k(S+"|[\\/\\?]")+"*"),A=k(k("\\/\\/"+w+x)+"|"+R+"|"+D+"|"+j);k(k(u+"\\:"+A+k("\\?"+O)+"?"+k("\\#"+I)+"?")+"|"+k(k(k("\\/\\/"+w+x)+"|"+R+"|"+$+"|"+j)+k("\\?"+O)+"?"+k("\\#"+I)+"?")),k(u+"\\:"+A+k("\\?"+O)+"?"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+R+"|"+D+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+R+"|"+$+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+R+"|"+D+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k("("+c+")@"),k("\\:("+E+")");return{NOT_SCHEME:new RegExp(C("[^]",r,t,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(C("[^\\%\\:]",l,o),"g"),NOT_HOST:new RegExp(C("[^\\%\\[\\]\\:]",l,o),"g"),NOT_PATH:new RegExp(C("[^\\%\\/\\:\\@]",l,o),"g"),NOT_PATH_NOSCHEME:new RegExp(C("[^\\%\\/\\@]",l,o),"g"),NOT_QUERY:new RegExp(C("[^\\%]",l,o,"[\\:\\@\\/\\?]",n),"g"),NOT_FRAGMENT:new RegExp(C("[^\\%]",l,o,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(C("[^]",l,o),"g"),UNRESERVED:new RegExp(l,"g"),OTHER_CHARS:new RegExp(C("[^\\%]",l,i),"g"),PCT_ENCODED:new RegExp(s,"g"),IPV4ADDRESS:new RegExp("^("+d+")$"),IPV6ADDRESS:new RegExp("^\\[?("+m+")"+k(k("\\%25|\\%(?!"+a+"{2})")+"("+v+")")+"?\\]?$")}}var c=r(!1),h=r(!0),w=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,r){var t=[],a=!0,s=!1,o=void 0;try{for(var i,n=e[Symbol.iterator]();!(a=(i=n.next()).done)&&(t.push(i.value),!r||t.length!==r);a=!0);}catch(e){s=!0,o=e}finally{try{!a&&n.return&&n.return()}finally{if(s)throw o}}return t}(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")},A=2147483647,t=/^xn--/,s=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,i={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},L=Math.floor,z=String.fromCharCode;function T(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1<t.length&&(a=t[0]+"@",e=t[1]),a+function(e,r){for(var t=[],a=e.length;a--;)t[a]=r(e[a]);return t}((e=e.replace(o,".")).split("."),r).join(".")}function N(e){for(var r=[],t=0,a=e.length;t<a;){var s=e.charCodeAt(t++);if(55296<=s&&s<=56319&&t<a){var o=e.charCodeAt(t++);56320==(64512&o)?r.push(((1023&s)<<10)+(1023&o)+65536):(r.push(s),t--)}else r.push(s)}return r}var q=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},Q=function(e,r,t){var a=0;for(e=t?L(e/700):e>>1,e+=L(e/r);455<e;a+=36)e=L(e/35);return L(a+36*e/(e+38))},l=function(e){var r,t=[],a=e.length,s=0,o=128,i=72,n=e.lastIndexOf("-");n<0&&(n=0);for(var l=0;l<n;++l)128<=e.charCodeAt(l)&&T("not-basic"),t.push(e.charCodeAt(l));for(var u=0<n?n+1:0;u<a;){for(var c=s,h=1,d=36;;d+=36){a<=u&&T("invalid-input");var f=(r=e.charCodeAt(u++))-48<10?r-22:r-65<26?r-65:r-97<26?r-97:36;(36<=f||f>L((A-s)/h))&&T("overflow"),s+=f*h;var p=d<=i?1:i+26<=d?26:d-i;if(f<p)break;var m=36-p;h>L(A/m)&&T("overflow"),h*=m}var v=t.length+1;i=Q(s-c,v,0==c),L(s/v)>A-o&&T("overflow"),o+=L(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)},u=function(e){var r=[],t=(e=N(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var u,c=e[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var h=u.value;h<128&&r.push(z(h))}}catch(e){n=!0,l=e}finally{try{!i&&c.return&&c.return()}finally{if(n)throw l}}var d=r.length,f=d;for(d&&r.push("-");f<t;){var p=A,m=!0,v=!1,g=void 0;try{for(var y,P=e[Symbol.iterator]();!(m=(y=P.next()).done);m=!0){var E=y.value;a<=E&&E<p&&(p=E)}}catch(e){v=!0,g=e}finally{try{!m&&P.return&&P.return()}finally{if(v)throw g}}var w=f+1;p-a>L((A-s)/w)&&T("overflow"),s+=(p-a)*w,a=p;var S=!0,b=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(S=(F=x.next()).done);S=!0){var R=F.value;if(R<a&&++s>A&&T("overflow"),R==a){for(var $=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if($<j)break;var O=$-j,I=36-j;r.push(z(q(j+O%I,0))),$=L(O/I)}r.push(z(q($,0))),o=Q(s,w,f==d),s=0,++f}}}catch(e){b=!0,_=e}finally{try{!S&&x.return&&x.return()}finally{if(b)throw _}}++s,++a}return r.join("")},v={version:"2.1.0",ucs2:{decode:N,encode:function(e){return String.fromCodePoint.apply(String,function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)}(e))}},decode:l,encode:u,toASCII:function(e){return n(e,function(e){return s.test(e)?"xn--"+u(e):e})},toUnicode:function(e){return n(e,function(e){return t.test(e)?l(e.slice(4).toLowerCase()):e})}},d={};function m(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function f(e){for(var r="",t=0,a=e.length;t<a;){var s=parseInt(e.substr(t+1,2),16);if(s<128)r+=String.fromCharCode(s),t+=3;else if(194<=s&&s<224){if(6<=a-t){var o=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&s)<<6|63&o)}else r+=e.substr(t,6);t+=6}else if(224<=s){if(9<=a-t){var i=parseInt(e.substr(t+4,2),16),n=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&s)<<12|(63&i)<<6|63&n)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function g(e,t){function r(e){var r=f(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,m).replace(t.PCT_ENCODED,p)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,m).replace(t.PCT_ENCODED,p)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,m).replace(t.PCT_ENCODED,p)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,m).replace(t.PCT_ENCODED,p)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,m).replace(t.PCT_ENCODED,p)),e}function S(e){return e.replace(/^0*(.*)/,"$1")||"0"}function b(e,r){var t=e.match(r.IPV4ADDRESS)||[],a=w(t,2)[1];return a?a.split(".").map(S).join("."):e}function y(e,r){var t=e.match(r.IPV6ADDRESS)||[],a=w(t,3),s=a[1],o=a[2];if(s){for(var i=s.toLowerCase().split("::").reverse(),n=w(i,2),l=n[0],u=n[1],c=u?u.split(":").map(S):[],h=l.split(":").map(S),d=r.IPV4ADDRESS.test(h[h.length-1]),f=d?7:8,p=h.length-f,m=Array(f),v=0;v<f;++v)m[v]=c[v]||h[p+v]||"";d&&(m[f-1]=b(m[f-1],r));var g=m.reduce(function(e,r,t){if(!r||"0"===r){var a=e[e.length-1];a&&a.index+a.length===t?a.length++:e.push({index:t,length:1})}return e},[]).sort(function(e,r){return r.length-e.length})[0],y=void 0;if(g&&1<g.length){var P=m.slice(0,g.index),E=m.slice(g.index+g.length);y=P.join(":")+"::"+E.join(":")}else y=m.join(":");return o&&(y+="%"+o),y}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,E=void 0==="".match(/(){0}/)[1];function _(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t={},a=!1!==r.iri?h:c;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var s=e.match(P);if(s){E?(t.scheme=s[1],t.userinfo=s[3],t.host=s[4],t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=s[7],t.fragment=s[8],isNaN(t.port)&&(t.port=s[5])):(t.scheme=s[1]||void 0,t.userinfo=-1!==e.indexOf("@")?s[3]:void 0,t.host=-1!==e.indexOf("//")?s[4]:void 0,t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=-1!==e.indexOf("?")?s[7]:void 0,t.fragment=-1!==e.indexOf("#")?s[8]:void 0,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?s[4]:void 0)),t.host&&(t.host=y(b(t.host,a),a)),t.reference=void 0!==t.scheme||void 0!==t.userinfo||void 0!==t.host||void 0!==t.port||t.path||void 0!==t.query?void 0===t.scheme?"relative":void 0===t.fragment?"absolute":"uri":"same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var o=d[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||o&&o.unicodeSupport)g(t,a);else{if(t.host&&(r.domainHost||o&&o.domainHost))try{t.host=v.toASCII(t.host.replace(a.PCT_ENCODED,f).toLowerCase())}catch(e){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+e}g(t,c)}o&&o.parse&&o.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}var F=/^\.\.?\//,x=/^\/\.(\/|$)/,R=/^\/\.\.(\/|$)/,$=/^\/?(?:.|\n)*?(?=\/|$)/;function D(e){for(var r=[];e.length;)if(e.match(F))e=e.replace(F,"");else if(e.match(x))e=e.replace(x,"/");else if(e.match(R))e=e.replace(R,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match($);if(!t)throw new Error("Unexpected dot segment condition");var a=t[0];e=e.slice(a.length),r.push(a)}return r.join("")}function j(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.iri?h:c,a=[],s=d[(t.scheme||r.scheme||"").toLowerCase()];if(s&&s.serialize&&s.serialize(r,t),r.host)if(e.IPV6ADDRESS.test(r.host));else if(t.domainHost||s&&s.domainHost)try{r.host=t.iri?v.toUnicode(r.host):v.toASCII(r.host.replace(e.PCT_ENCODED,f).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+e}g(r,e),"suffix"!==t.reference&&r.scheme&&(a.push(r.scheme),a.push(":"));var o,i,n,l=(i=!1!==t.iri?h:c,n=[],void 0!==(o=r).userinfo&&(n.push(o.userinfo),n.push("@")),void 0!==o.host&&n.push(y(b(String(o.host),i),i).replace(i.IPV6ADDRESS,function(e,r,t){return"["+r+(t?"%25"+t:"")+"]"})),"number"==typeof o.port&&(n.push(":"),n.push(o.port.toString(10))),n.length?n.join(""):void 0);if(void 0!==l&&("suffix"!==t.reference&&a.push("//"),a.push(l),r.path&&"/"!==r.path.charAt(0)&&a.push("/")),void 0!==r.path){var u=r.path;t.absolutePath||s&&s.absolutePath||(u=D(u)),void 0===l&&(u=u.replace(/^\/\//,"/%2F")),a.push(u)}return void 0!==r.query&&(a.push("?"),a.push(r.query)),void 0!==r.fragment&&(a.push("#"),a.push(r.fragment)),a.join("")}function O(e,r){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a={};return arguments[3]||(e=_(j(e,t),t),r=_(j(r,t),t)),!(t=t||{}).tolerant&&r.scheme?(a.scheme=r.scheme,a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(void 0!==r.userinfo||void 0!==r.host||void 0!==r.port?(a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(a.query=r.path?(a.path="/"===r.path.charAt(0)?D(r.path):(a.path=void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:r.path:"/"+r.path,D(a.path)),r.query):(a.path=e.path,void 0!==r.query?r.query:e.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=r.fragment,a}function I(e,r){return e&&e.toString().replace(r&&r.iri?h.PCT_ENCODED:c.PCT_ENCODED,f)}var U={scheme:"http",domainHost:!0,parse:function(e,r){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,r){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},V={scheme:"https",domainHost:U.domainHost,parse:U.parse,serialize:U.serialize},H={},M="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",K="[0-9A-Fa-f]",B=k(k("%[EFef]"+K+"%"+K+K+"%"+K+K)+"|"+k("%[89A-Fa-f]"+K+"%"+K+K)+"|"+k("%"+K+K)),J=C("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),Z=new RegExp(M,"g"),G=new RegExp(B,"g"),Y=new RegExp(C("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',J),"g"),W=new RegExp(C("[^]",M,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),X=W;function ee(e){var r=f(e);return r.match(Z)?r:e}var re={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n<l;++n){var u=i[n].split("=");switch(u[0]){case"to":for(var c=u[1].split(","),h=0,d=c.length;h<d;++h)a.push(c[h]);break;case"subject":t.subject=I(u[1],r);break;case"body":t.body=I(u[1],r);break;default:s=!0,o[I(u[0],r)]=I(u[1],r)}}s&&(t.headers=o)}t.query=void 0;for(var f=0,p=a.length;f<p;++f){var m=a[f].split("@");if(m[0]=I(m[0]),r.unicodeSupport)m[1]=I(m[1],r).toLowerCase();else try{m[1]=v.toASCII(I(m[1],r).toLowerCase())}catch(e){t.error=t.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}a[f]=m.join("@")}return t},serialize:function(e,r){var t,a=e,s=null!=(t=e.to)?t instanceof Array?t:"number"!=typeof t.length||t.split||t.setInterval||t.call?[t]:Array.prototype.slice.call(t):[];if(s){for(var o=0,i=s.length;o<i;++o){var n=String(s[o]),l=n.lastIndexOf("@"),u=n.slice(0,l).replace(G,ee).replace(G,p).replace(Y,m),c=n.slice(l+1);try{c=r.iri?v.toUnicode(c):v.toASCII(I(c,r).toLowerCase())}catch(e){a.error=a.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+e}s[o]=u+"@"+c}a.path=s.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var f in h)h[f]!==H[f]&&d.push(f.replace(G,ee).replace(G,p).replace(W,m)+"="+h[f].replace(G,ee).replace(G,p).replace(X,m));return d.length&&(a.query=d.join("&")),a}},te=/^([^\:]+)\:(.*)/,ae={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(te),a=e;if(t){var s=r.scheme||a.scheme||"urn",o=t[1].toLowerCase(),i=t[2],n=d[s+":"+(r.nid||o)];a.nid=o,a.nss=i,a.path=void 0,n&&(a=n.parse(a,r))}else a.error=a.error||"URN can not be parsed.";return a},serialize:function(e,r){var t=e.nid,a=d[(r.scheme||e.scheme||"urn")+":"+(r.nid||t)];a&&(e=a.serialize(e,r));var s=e;return s.path=(t||r.nid)+":"+e.nss,s}},se=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,oe={scheme:"urn:uuid",parse:function(e,r){var t=e;return t.uuid=t.nss,t.nss=void 0,r.tolerant||t.uuid&&t.uuid.match(se)||(t.error=t.error||"UUID is not valid."),t},serialize:function(e,r){var t=e;return t.nss=(e.uuid||"").toLowerCase(),t}};d[U.scheme]=U,d[V.scheme]=V,d[re.scheme]=re,d[ae.scheme]=ae,d[oe.scheme]=oe,e.SCHEMES=d,e.pctEncChar=m,e.pctDecChars=f,e.parse=_,e.removeDotSegments=D,e.serialize=j,e.resolveComponents=O,e.resolve=function(e,r,t){var a=function(e,r){var t=e;if(r)for(var a in r)t[a]=r[a];return t}({scheme:"null"},t);return j(O(_(e,a),_(r,a),a,!0),a)},e.normalize=function(e,r){return"string"==typeof e?e=j(_(e,r),r):"object"===a(e)&&(e=_(j(e,r),r)),e},e.equal=function(e,r,t){return"string"==typeof e?e=j(_(e,t),t):"object"===a(e)&&(e=j(e,t)),"string"==typeof r?r=j(_(r,t),t):"object"===a(r)&&(r=j(r,t)),e===r},e.escapeComponent=function(e,r){return e&&e.toString().replace(r&&r.iri?h.ESCAPE:c.ESCAPE,m)},e.unescapeComponent=I,Object.defineProperty(e,"__esModule",{value:!0})}("object"==typeof t&&void 0!==r?t:a.URI=a.URI||{})},{}],ajv:[function(a,e,r){"use strict";var n=a("./compile"),d=a("./compile/resolve"),t=a("./cache"),f=a("./compile/schema_obj"),s=a("fast-json-stable-stringify"),o=a("./compile/formats"),i=a("./compile/rules"),l=a("./data"),u=a("./compile/util");(e.exports=g).prototype.validate=function(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);!0!==t.$async&&(this.errors=t.errors);return s},g.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},g.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);return this}var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");return b(this,r=d.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0),this},g.prototype.addMetaSchema=function(e,r,t){return this.addSchema(e,r,t,!0),this},g.prototype.validateSchema=function(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||(a=this,s=a._opts.meta,a._opts.defaultMeta="object"==typeof s?a._getId(s)||s:a.getSchema(p)?p:void 0,a._opts.defaultMeta)))return this.logger.warn("meta-schema not available"),!(this.errors=null);var a,s;var o=this.validate(t,e);if(!o&&r){var i="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(i);this.logger.error(i)}return o},g.prototype.getSchema=function(e){var r=y(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return function(e,r){var t=d.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=n.call(e,a,s,void 0,o);return e._fragments[r]=new f({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}(this,e)}},g.prototype.removeSchema=function(e){if(e instanceof RegExp)return P(this,this._schemas,e),P(this,this._refs,e),this;switch(typeof e){case"undefined":return P(this,this._schemas),P(this,this._refs),this._cache.clear(),this;case"string":var r=y(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],delete this._refs[e],this;case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=d.normalizeId(s),delete this._schemas[s],delete this._refs[s])}return this},g.prototype.addFormat=function(e,r){"string"==typeof r&&(r=new RegExp(r));return this._formats[e]=r,this},g.prototype.errorsText=function(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)},g.prototype._addSchema=function(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=d.normalizeId(this._getId(e));n&&a&&b(this,n);var l,u=!1!==this._opts.validateSchema&&!r;u&&!(l=n&&n==d.normalizeId(e.$schema))&&this.validateSchema(e,!0);var c=d.ids.call(this,e),h=new f({id:n,schema:e,localRefs:c,cacheKey:o,meta:t});"#"!=n[0]&&a&&(this._refs[n]=h);this._cache.put(o,h),u&&l&&this.validateSchema(e,!0);return h},g.prototype._compile=function(t,e){if(t.compiling)return(t.validate=s).schema=t.schema,s.errors=null,s.root=e||s,!0===t.schema.$async&&(s.$async=!0),s;var r,a;t.compiling=!0,t.meta&&(r=this._opts,this._opts=this._metaOpts);try{a=n.call(this,t.schema,e,t.localRefs)}catch(e){throw delete t.validate,e}finally{t.compiling=!1,t.meta&&(this._opts=r)}return t.validate=a,t.refs=a.refs,t.refVal=a.refVal,t.root=a.root,a;function s(){var e=t.validate,r=e.apply(this,arguments);return s.errors=e.errors,r}},g.prototype.compileAsync=a("./compile/async");var c=a("./keyword");g.prototype.addKeyword=c.add,g.prototype.getKeyword=c.get,g.prototype.removeKeyword=c.remove;var h=a("./compile/error_classes");g.ValidationError=h.Validation,g.MissingRefError=h.MissingRef,g.$dataMetaSchema=l;var p="http://json-schema.org/draft-07/schema",m=["removeAdditional","useDefaults","coerceTypes"],v=["/properties"];function g(e){if(!(this instanceof g))return new g(e);e=this._opts=u.copy(e)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:_,warn:_,error:_};else{if(void 0===r&&(r=console),!("object"==typeof r&&r.log&&r.warn&&r.error))throw new Error("logger must implement log, warn and error methods");e.logger=r}}(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(e.format),this._cache=e.cache||new t,this._loadingSchemas={},this._compilations=[],this.RULES=i(),this._getId=function(e){switch(e.schemaId){case"auto":return S;case"id":return E;default:return w}}(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=s),this._metaOpts=function(e){for(var r=u.copy(e._opts),t=0;t<m.length;t++)delete r[m[t]];return r}(this),e.formats&&function(e){for(var r in e._opts.formats){var t=e._opts.formats[r];e.addFormat(r,t)}}(this),function(e){var r;e._opts.$data&&(r=a("./refs/data.json"),e.addMetaSchema(r,r.$id,!0));if(!1===e._opts.meta)return;var t=a("./refs/json-schema-draft-07.json");e._opts.$data&&(t=l(t,v));e.addMetaSchema(t,p,!0),e._refs["http://json-schema.org/schema"]=p}(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword("nullable",{metaSchema:{const:!0}}),function(e){var r=e._opts.schemas;if(!r)return;if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}(this)}function y(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function P(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function E(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function w(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function S(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function b(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function _(){}},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":38,"./refs/data.json":39,"./refs/json-schema-draft-07.json":40,"fast-json-stable-stringify":42}]},{},[])("ajv")});
+/* ajv 6.9.1: Another JSON Schema Validator */
+!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Ajv=e()}}(function(){return function o(i,n,l){function u(r,e){if(!n[r]){if(!i[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(c)return c(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var s=n[r]={exports:{}};i[r][0].call(s.exports,function(e){return u(i[r][1][e]||e)},s,s.exports,o,i,n,l)}return n[r].exports}for(var c="function"==typeof require&&require,e=0;e<l.length;e++)u(l[e]);return u}({1:[function(e,r,t){"use strict";var a=r.exports=function(){this._cache={}};a.prototype.put=function(e,r){this._cache[e]=r},a.prototype.get=function(e){return this._cache[e]},a.prototype.del=function(e){delete this._cache[e]},a.prototype.clear=function(){this._cache={}}},{}],2:[function(e,r,t){"use strict";var s=e("./error_classes").MissingRef;r.exports=function t(r,i,a){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof i&&(a=i,i=void 0);var e=l(r).then(function(){var e=n._addSchema(r,void 0,i);return e.validate||u(e)});a&&e.then(function(e){a(null,e)},a);return e;function l(e){var r=e.$schema;return r&&!n.getSchema(r)?t.call(n,{$ref:r},!0):Promise.resolve()}function u(o){try{return n._compile(o)}catch(e){if(e instanceof s)return r(e);throw e}function r(e){var r=e.missingSchema;if(s(r))throw new Error("Schema "+r+" is loaded but "+e.missingRef+" cannot be resolved");var t=n._loadingSchemas[r];return t||(t=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(a,a),t.then(function(e){if(!s(r))return l(e).then(function(){s(r)||n.addSchema(e,r,void 0,i)})}).then(function(){return u(o)});function a(){delete n._loadingSchemas[r]}function s(e){return n._refs[e]||n._schemas[e]}}}}},{"./error_classes":3}],3:[function(e,r,t){"use strict";var a=e("./resolve");function s(e,r,t){this.message=t||s.message(e,r),this.missingRef=a.url(e,r),this.missingSchema=a.normalizeId(a.fullPath(this.missingRef))}function o(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}r.exports={Validation:o(function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0}),MissingRef:o(s)},s.message=function(e,r){return"can't resolve reference "+r+" from id "+e}},{"./resolve":6}],4:[function(e,r,t){"use strict";var a=e("./util"),o=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,i=[0,31,28,31,30,31,30,31,31,30,31,30,31],n=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i,s=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,u=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,c=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,h=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,d=/^(?:\/(?:[^~/]|~0|~1)*)*$/,p=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,f=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function m(e){return a.copy(m[e="full"==e?"full":"fast"])}function v(e){var r=e.match(o);if(!r)return!1;var t,a=+r[2],s=+r[3];return 1<=a&&a<=12&&1<=s&&s<=(2!=a||((t=+r[1])%4!=0||t%100==0&&t%400!=0)?i[a]:29)}function y(e,r){var t=e.match(n);if(!t)return!1;var a=t[1],s=t[2],o=t[3];return(a<=23&&s<=59&&o<=59||23==a&&59==s&&60==o)&&(!r||t[5])}(r.exports=m).fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":u,url:c,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:s,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":p,"relative-json-pointer":f},m.full={date:v,time:y,"date-time":function(e){var r=e.split(g);return 2==r.length&&v(r[0])&&y(r[1],!0)},uri:function(e){return P.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":u,url:c,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:function(e){return e.length<=255&&s.test(e)},ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:h,"json-pointer":d,"json-pointer-uri-fragment":p,"relative-json-pointer":f};var g=/t|\s/i;var P=/\/|:/;var E=/[^\\]\\Z/;function w(e){if(E.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},{"./util":10}],5:[function(e,r,t){"use strict";var R=e("./resolve"),D=e("./util"),j=e("./error_classes"),O=e("fast-json-stable-stringify"),I=e("../dotjs/validate"),A=D.ucs2length,C=e("fast-deep-equal"),k=j.Validation;function L(e,r,t){var a=s.call(this,e,r,t);return 0<=a?{index:a,compiling:!0}:{index:a=this._compilations.length,compiling:!(this._compilations[a]={schema:e,root:r,baseId:t})}}function z(e,r,t){var a=s.call(this,e,r,t);0<=a&&this._compilations.splice(a,1)}function s(e,r,t){for(var a=0;a<this._compilations.length;a++){var s=this._compilations[a];if(s.schema==e&&s.root==r&&s.baseId==t)return a}return-1}function T(e,r){return"var pattern"+e+" = new RegExp("+D.toQuotedString(r[e])+");"}function q(e){return"var default"+e+" = defaults["+e+"];"}function N(e,r){return void 0===r[e]?"":"var refVal"+e+" = refVal["+e+"];"}function Q(e){return"var customRule"+e+" = customRules["+e+"];"}function U(e,r){if(!e.length)return"";for(var t="",a=0;a<e.length;a++)t+=r(a,e);return t}r.exports=function u(e,c,h,r){var p=this,f=this._opts,d=[void 0],m={},v=[],t={},y=[],a={},g=[];c=c||{schema:e,refVal:d,refs:m};var s=L.call(this,e,c,r);var o=this._compilations[s.index];if(s.compiling)return o.callValidate=l;var P=this._formats;var E=this.RULES;try{var i=w(e,c,h,r);o.validate=i;var n=o.callValidate;return n&&(n.schema=i.schema,n.errors=null,n.refs=i.refs,n.refVal=i.refVal,n.root=i.root,n.$async=i.$async,f.sourceCode&&(n.source=i.source)),i}finally{z.call(this,e,c,r)}function l(){var e=o.validate,r=e.apply(this,arguments);return l.errors=e.errors,r}function w(e,r,t,a){var s=!r||r&&r.schema==e;if(r.schema!=c.schema)return u.call(p,e,r,t,a);var o,i=!0===e.$async,n=I({isTop:!0,schema:e,isRoot:s,baseId:a,root:r,schemaPath:"",errSchemaPath:"#",errorPath:'""',MissingRefError:j.MissingRef,RULES:E,validate:I,util:D,resolve:R,resolveRef:S,usePattern:F,useDefault:x,useCustomRule:$,opts:f,formats:P,logger:p.logger,self:p});n=U(d,N)+U(v,T)+U(y,q)+U(g,Q)+n,f.processCode&&(n=f.processCode(n));try{var l=new Function("self","RULES","formats","root","refVal","defaults","customRules","equal","ucs2length","ValidationError",n);o=l(p,E,P,c,d,y,g,C,A,k),d[0]=o}catch(e){throw p.logger.error("Error compiling schema, function code:",n),e}return o.schema=e,o.errors=null,o.refs=m,o.refVal=d,o.root=s?o:r,i&&(o.$async=!0),!0===f.sourceCode&&(o.source={code:n,patterns:v,defaults:y}),o}function S(e,r,t){r=R.url(e,r);var a,s,o=m[r];if(void 0!==o)return _(a=d[o],s="refVal["+o+"]");if(!t&&c.refs){var i=c.refs[r];if(void 0!==i)return s=b(r,a=c.refVal[i]),_(a,s)}s=b(r);var n=R.call(p,w,c,r);if(void 0===n){var l=h&&h[r];l&&(n=R.inlineRef(l,f.inlineRefs)?l:u.call(p,l,c,h,e))}if(void 0!==n)return d[m[r]]=n,_(n,s);delete m[r]}function b(e,r){var t=d.length;return d[t]=r,"refVal"+(m[e]=t)}function _(e,r){return"object"==typeof e||"boolean"==typeof e?{code:r,schema:e,inline:!0}:{code:r,$async:e&&!!e.$async}}function F(e){var r=t[e];return void 0===r&&(r=t[e]=v.length,v[r]=e),"pattern"+r}function x(e){switch(typeof e){case"boolean":case"number":return""+e;case"string":return D.toQuotedString(e);case"object":if(null===e)return"null";var r=O(e),t=a[r];return void 0===t&&(t=a[r]=y.length,y[t]=e),"default"+t}}function $(e,r,t,a){if(!1!==p._opts.validateSchema){var s=e.definition.dependencies;if(s&&!s.every(function(e){return Object.prototype.hasOwnProperty.call(t,e)}))throw new Error("parent schema must have all required keywords: "+s.join(","));var o=e.definition.validateSchema;if(o){var i=o(r);if(!i){var n="keyword schema is invalid: "+p.errorsText(o.errors);if("log"!=p._opts.validateSchema)throw new Error(n);p.logger.error(n)}}}var l,u=e.definition.compile,c=e.definition.inline,h=e.definition.macro;if(u)l=u.call(p,r,t,a);else if(h)l=h.call(p,r,t,a),!1!==f.validateSchema&&p.validateSchema(l,!0);else if(c)l=c.call(p,a,e.keyword,r,t);else if(!(l=e.definition.validate))return;if(void 0===l)throw new Error('custom keyword "'+e.keyword+'"failed to compile');var d=g.length;return{code:"customRule"+d,validate:g[d]=l}}}},{"../dotjs/validate":37,"./error_classes":3,"./resolve":6,"./util":10,"fast-deep-equal":41,"fast-json-stable-stringify":42}],6:[function(e,r,t){"use strict";var m=e("uri-js"),v=e("fast-deep-equal"),y=e("./util"),l=e("./schema_obj"),a=e("json-schema-traverse");function u(e,r,t){var a=this._refs[t];if("string"==typeof a){if(!this._refs[a])return u.call(this,e,r,a);a=this._refs[a]}if((a=a||this._schemas[t])instanceof l)return d(a.schema,this._opts.inlineRefs)?a.schema:a.validate||this._compile(a);var s,o,i,n=c.call(this,r,t);return n&&(s=n.schema,r=n.root,i=n.baseId),s instanceof l?o=s.validate||e.call(this,s.schema,r,void 0,i):void 0!==s&&(o=d(s,this._opts.inlineRefs)?s:e.call(this,s,r,void 0,i)),o}function c(e,r){var t=m.parse(r),a=p(t),s=g(this._getId(e.schema));if(0===Object.keys(e.schema).length||a!==s){var o=P(a),i=this._refs[o];if("string"==typeof i)return function(e,r,t){var a=c.call(this,e,r);if(a){var s=a.schema,o=a.baseId;e=a.root;var i=this._getId(s);return i&&(o=f(o,i)),n.call(this,t,o,s,e)}}.call(this,e,i,t);if(i instanceof l)i.validate||this._compile(i),e=i;else{if(!((i=this._schemas[o])instanceof l))return;if(i.validate||this._compile(i),o==P(r))return{schema:i,root:e,baseId:s};e=i}if(!e.schema)return;s=g(this._getId(e.schema))}return n.call(this,t,s,e.schema,e)}(r.exports=u).normalizeId=P,u.fullPath=g,u.url=f,u.ids=function(e){var r=P(this._getId(e)),h={"":r},d={"":g(r,!1)},p={},f=this;return a(e,{allKeys:!0},function(e,r,t,a,s,o,i){if(""!==r){var n=f._getId(e),l=h[a],u=d[a]+"/"+s;if(void 0!==i&&(u+="/"+("number"==typeof i?i:y.escapeFragment(i))),"string"==typeof n){n=l=P(l?m.resolve(l,n):n);var c=f._refs[n];if("string"==typeof c&&(c=f._refs[c]),c&&c.schema){if(!v(e,c.schema))throw new Error('id "'+n+'" resolves to more than one schema')}else if(n!=P(u))if("#"==n[0]){if(p[n]&&!v(e,p[n]))throw new Error('id "'+n+'" resolves to more than one schema');p[n]=e}else f._refs[n]=u}h[r]=l,d[r]=u}}),p},u.inlineRef=d,u.schema=c;var h=y.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function n(e,r,t,a){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var s=e.fragment.split("/"),o=1;o<s.length;o++){var i=s[o];if(i){if(void 0===(t=t[i=y.unescapeFragment(i)]))break;var n;if(!h[i]&&((n=this._getId(t))&&(r=f(r,n)),t.$ref)){var l=f(r,t.$ref),u=c.call(this,a,l);u&&(t=u.schema,a=u.root,r=u.baseId)}}}return void 0!==t&&t!==a.schema?{schema:t,root:a,baseId:r}:void 0}}var i=y.toHash(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum"]);function d(e,r){return!1!==r&&(void 0===r||!0===r?function e(r){var t;if(Array.isArray(r)){for(var a=0;a<r.length;a++)if("object"==typeof(t=r[a])&&!e(t))return!1}else for(var s in r){if("$ref"==s)return!1;if("object"==typeof(t=r[s])&&!e(t))return!1}return!0}(e):r?function e(r){var t,a=0;if(Array.isArray(r)){for(var s=0;s<r.length;s++)if("object"==typeof(t=r[s])&&(a+=e(t)),a==1/0)return 1/0}else for(var o in r){if("$ref"==o)return 1/0;if(i[o])a++;else if("object"==typeof(t=r[o])&&(a+=e(t)+1),a==1/0)return 1/0}return a}(e)<=r:void 0)}function g(e,r){return!1!==r&&(e=P(e)),p(m.parse(e))}function p(e){return m.serialize(e).split("#")[0]+"#"}var s=/#\/?$/;function P(e){return e?e.replace(s,""):""}function f(e,r){return r=P(r),m.resolve(e,r)}},{"./schema_obj":8,"./util":10,"fast-deep-equal":41,"json-schema-traverse":43,"uri-js":44}],7:[function(e,r,t){"use strict";var o=e("../dotjs"),i=e("./util").toHash;r.exports=function(){var a=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],s=["type","$comment"];return a.all=i(s),a.types=i(["number","integer","string","array","object","boolean","null"]),a.forEach(function(e){e.rules=e.rules.map(function(e){var r;if("object"==typeof e){var t=Object.keys(e)[0];r=e[t],e=t,r.forEach(function(e){s.push(e),a.all[e]=!0})}return s.push(e),a.all[e]={keyword:e,code:o[e],implements:r}}),a.all.$comment={keyword:"$comment",code:o.$comment},e.type&&(a.types[e.type]=e)}),a.keywords=i(s.concat(["$schema","$id","id","$data","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),a.custom={},a}},{"../dotjs":26,"./util":10}],8:[function(e,r,t){"use strict";var a=e("./util");r.exports=function(e){a.copy(e,this)}},{"./util":10}],9:[function(e,r,t){"use strict";r.exports=function(e){for(var r,t=0,a=e.length,s=0;s<a;)t++,55296<=(r=e.charCodeAt(s++))&&r<=56319&&s<a&&56320==(64512&(r=e.charCodeAt(s)))&&s++;return t}},{}],10:[function(e,r,t){"use strict";function o(e,r,t){var a=t?" !== ":" === ",s=t?" || ":" && ",o=t?"!":"",i=t?"":"!";switch(e){case"null":return r+a+"null";case"array":return o+"Array.isArray("+r+")";case"object":return"("+o+r+s+"typeof "+r+a+'"object"'+s+i+"Array.isArray("+r+"))";case"integer":return"(typeof "+r+a+'"number"'+s+i+"("+r+" % 1)"+s+r+a+r+")";default:return"typeof "+r+a+'"'+e+'"'}}r.exports={copy:function(e,r){for(var t in r=r||{},e)r[t]=e[t];return r},checkDataType:o,checkDataTypes:function(e,r){switch(e.length){case 1:return o(e[0],r,!0);default:var t="",a=n(e);for(var s in a.array&&a.object&&(t=a.null?"(":"(!"+r+" || ",t+="typeof "+r+' !== "object")',delete a.null,delete a.array,delete a.object),a.number&&delete a.integer,a)t+=(t?" && ":"")+o(s,r,!0);return t}},coerceToTypes:function(e,r){if(Array.isArray(r)){for(var t=[],a=0;a<r.length;a++){var s=r[a];i[s]?t[t.length]=s:"array"===e&&"array"===s&&(t[t.length]=s)}if(t.length)return t}else{if(i[r])return[r];if("array"===e&&"array"===r)return["array"]}},toHash:n,getProperty:h,escapeQuotes:l,equal:e("fast-deep-equal"),ucs2length:e("./ucs2length"),varOccurences:function(e,r){var t=e.match(new RegExp(r+="[^0-9]","g"));return t?t.length:0},varReplace:function(e,r,t){return r+="([^0-9])",t=t.replace(/\$/g,"$$$$"),e.replace(new RegExp(r,"g"),t+"$1")},cleanUpCode:function(e){return e.replace(u,"").replace(c,"").replace(d,"if (!($1))")},finalCleanUpCode:function(e,r){var t=e.match(p);t&&2==t.length&&(e=r?e.replace(m,"").replace(g,P):e.replace(f,"").replace(v,y));return(t=e.match(E))&&3===t.length?e.replace(w,""):e},schemaHasRules:function(e,r){if("boolean"==typeof e)return!e;for(var t in e)if(r[t])return!0},schemaHasRulesExcept:function(e,r,t){if("boolean"==typeof e)return!e&&"not"!=t;for(var a in e)if(a!=t&&r[a])return!0},toQuotedString:S,getPathExpr:function(e,r,t,a){return F(e,t?"'/' + "+r+(a?"":".replace(/~/g, '~0').replace(/\\//g, '~1')"):a?"'[' + "+r+" + ']'":"'[\\'' + "+r+" + '\\']'")},getPath:function(e,r,t){var a=S(t?"/"+x(r):h(r));return F(e,a)},getData:function(e,r,t){var a,s,o,i;if(""===e)return"rootData";if("/"==e[0]){if(!b.test(e))throw new Error("Invalid JSON-pointer: "+e);s=e,o="rootData"}else{if(!(i=e.match(_)))throw new Error("Invalid JSON-pointer: "+e);if(a=+i[1],"#"==(s=i[2])){if(r<=a)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(r<a)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,l=s.split("/"),u=0;u<l.length;u++){var c=l[u];c&&(o+=h($(c)),n+=" && "+o)}return n},unescapeFragment:function(e){return $(decodeURIComponent(e))},unescapeJsonPointer:$,escapeFragment:function(e){return encodeURIComponent(x(e))},escapeJsonPointer:x};var i=n(["string","number","integer","boolean","null"]);function n(e){for(var r={},t=0;t<e.length;t++)r[e[t]]=!0;return r}var a=/^[a-z$_][a-z$_0-9]*$/i,s=/'|\\/g;function h(e){return"number"==typeof e?"["+e+"]":a.test(e)?"."+e:"['"+l(e)+"']"}function l(e){return e.replace(s,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\f/g,"\\f").replace(/\t/g,"\\t")}var u=/else\s*{\s*}/g,c=/if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g,d=/if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;var p=/[^v.]errors/g,f=/var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g,m=/var errors = 0;|var vErrors = null;/g,v="return errors === 0;",y="validate.errors = null; return true;",g=/if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/,P="return data;",E=/[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g,w=/if \(rootData === undefined\) rootData = data;/;function S(e){return"'"+l(e)+"'"}var b=/^\/(?:[^~]|~0|~1)*$/,_=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function F(e,r){return'""'==e?r:(e+" + "+r).replace(/' \+ '/g,"")}function x(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function $(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}},{"./ucs2length":9,"fast-deep-equal":41}],11:[function(e,r,t){"use strict";var l=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];r.exports=function(e,r){for(var t=0;t<r.length;t++){e=JSON.parse(JSON.stringify(e));var a,s=r[t].split("/"),o=e;for(a=1;a<s.length;a++)o=o[s[a]];for(a=0;a<l.length;a++){var i=l[a],n=o[i];n&&(o[i]={anyOf:[n,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]})}}return e}},{}],12:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var p="maximum"==r,f=p?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[f],v=e.opts.$data&&m&&m.$data,y=p?"<":">",g=p?">":"<",P=void 0;if(v){var E=e.util.getData(m.$data,i,e.dataPathArr),w="exclusive"+o,S="exclType"+o,b="exclIsNumber"+o,_="' + "+($="op"+o)+" + '";s+=" var schemaExcl"+o+" = "+E+"; ";var F;P=f;(F=F||[]).push(s+=" var "+w+"; var "+S+" = typeof "+(E="schemaExcl"+o)+"; if ("+S+" != 'boolean' && "+S+" != 'undefined' && "+S+" != 'number') { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: {} ",!1!==e.opts.messages&&(s+=" , message: '"+f+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var x=s;s=F.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+S+" == 'number' ? ( ("+w+" = "+a+" === undefined || "+E+" "+y+"= "+a+") ? "+h+" "+g+"= "+E+" : "+h+" "+g+" "+a+" ) : ( ("+w+" = "+E+" === true) ? "+h+" "+g+"= "+a+" : "+h+" "+g+" "+a+" ) || "+h+" !== "+h+") { var op"+o+" = "+w+" ? '"+y+"' : '"+y+"='; ",void 0===n&&(u=e.errSchemaPath+"/"+(P=f),a=E,d=v)}else{_=y;if((b="number"==typeof m)&&d){var $="'"+_+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ( "+a+" === undefined || "+m+" "+y+"= "+a+" ? "+h+" "+g+"= "+m+" : "+h+" "+g+" "+a+" ) || "+h+" !== "+h+") { "}else{b&&void 0===n?(w=!0,u=e.errSchemaPath+"/"+(P=f),a=m,g+="="):(b&&(a=Math[p?"min":"max"](m,n)),m===(!b||a)?(w=!0,u=e.errSchemaPath+"/"+(P=f),g+="="):(w=!1,_+="="));$="'"+_+"'";s+=" if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+h+" "+g+" "+a+" || "+h+" !== "+h+") { "}}P=P||r,(F=F||[]).push(s),s="",!1!==e.createErrors?(s+=" { keyword: '"+(P||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { comparison: "+$+", limit: "+a+", exclusive: "+w+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be "+_+" ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";x=s;return s=F.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c&&(s+=" else { "),s}},{}],13:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || ");var p=r,f=f||[];f.push(s+=" "+h+".length "+("maxItems"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"fewer",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=f.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=!1===e.opts.unicode?" "+h+".length ":" ucs2length("+h+") ";var p=r,f=f||[];f.push(s+=" "+("maxLength"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=f.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || ");var p=r,f=f||[];f.push(s+=" Object.keys("+h+").length "+("maxProperties"==r?">":"<")+" "+a+") { "),s="",!1!==e.createErrors?(s+=" { keyword: '"+(p||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { limit: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"fewer",s+=" than ",s+=d?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=f.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.schema[r],o=e.schemaPath+e.util.getProperty(r),i=e.errSchemaPath+"/"+r,n=!e.opts.allErrors,l=e.util.copy(e),u="";l.level++;var c="valid"+l.level,h=l.baseId,d=!0,p=s;if(p)for(var f,m=-1,v=p.length-1;m<v;)f=p[m+=1],e.util.schemaHasRules(f,e.RULES.all)&&(d=!1,l.schema=f,l.schemaPath=o+"["+m+"]",l.errSchemaPath=i+"/"+m,a+=" "+e.validate(l)+" ",l.baseId=h,n&&(a+=" if ("+c+") { ",u+="}"));return n&&(a+=d?" if (true) { ":" "+u.slice(0,-1)+" "),a=e.util.cleanUpCode(a)}},{}],17:[function(e,r,t){"use strict";r.exports=function(r,e,t){var a=" ",s=r.level,o=r.dataLevel,i=r.schema[e],n=r.schemaPath+r.util.getProperty(e),l=r.errSchemaPath+"/"+e,u=!r.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,p=r.util.copy(r),f="";p.level++;var m="valid"+p.level;if(i.every(function(e){return r.util.schemaHasRules(e,r.RULES.all)})){var v=p.baseId;a+=" var "+d+" = errors; var "+h+" = false; ";var y=r.compositeRule;r.compositeRule=p.compositeRule=!0;var g=i;if(g)for(var P,E=-1,w=g.length-1;E<w;)P=g[E+=1],p.schema=P,p.schemaPath=n+"["+E+"]",p.errSchemaPath=l+"/"+E,a+=" "+r.validate(p)+" ",p.baseId=v,a+=" "+h+" = "+h+" || "+m+"; if (!"+h+") { ",f+="}";r.compositeRule=p.compositeRule=y,a+=" "+f+" if (!"+h+") { var err = ",!1!==r.createErrors?(a+=" { keyword: 'anyOf' , dataPath: (dataPath || '') + "+r.errorPath+" , schemaPath: "+r.util.toQuotedString(l)+" , params: {} ",!1!==r.opts.messages&&(a+=" , message: 'should match some schema in anyOf' "),r.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+r.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!r.compositeRule&&u&&(a+=r.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",r.opts.allErrors&&(a+=" } "),a=r.util.cleanUpCode(a)}else u&&(a+=" if (true) { ");return a}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.errSchemaPath+"/"+r,o=e.util.toQuotedString(e.schema[r]);return!0===e.opts.$comment?a+=" console.log("+o+");":"function"==typeof e.opts.$comment&&(a+=" self._opts.$comment("+o+", "+e.util.toQuotedString(s)+", validate.root.schema);"),a}},{}],19:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; "),d||(a+=" var schema"+s+" = validate.schema"+n+";");var p=p||[];p.push(a+="var "+h+" = equal("+c+", schema"+s+"); if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValue: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to constant' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var f=a;return a=p.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,p=e.util.copy(e);p.level++;var f="valid"+p.level,m="i"+s,v=p.dataLevel=e.dataLevel+1,y="data"+v,g=e.baseId,P=e.util.schemaHasRules(i,e.RULES.all);if(a+="var "+d+" = errors;var "+h+";",P){var E=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.schema=i,p.schemaPath=n,p.errSchemaPath=l,a+=" var "+f+" = false; for (var "+m+" = 0; "+m+" < "+c+".length; "+m+"++) { ",p.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers,!0);var w=c+"["+m+"]";p.dataPathArr[v]=m;var S=e.validate(p);p.baseId=g,e.util.varOccurences(S,y)<2?a+=" "+e.util.varReplace(S,y,w)+" ":a+=" var "+y+" = "+w+"; "+S+" ",a+=" if ("+f+") break; } ",e.compositeRule=p.compositeRule=E,a+=" if (!"+f+") {"}else a+=" if ("+c+".length == 0) {";var b=b||[];b.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should contain a valid item' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var _=a;return a=b.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { ",P&&(a+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } "),e.opts.allErrors&&(a+=" } "),a=e.util.cleanUpCode(a)}},{}],21:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],u=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,d="data"+(n||""),p="valid"+i,f="errs__"+i,m=e.opts.$data&&l&&l.$data;s=m?(o+=" var schema"+i+" = "+e.util.getData(l.$data,n,e.dataPathArr)+"; ","schema"+i):l;var v,y,g,P,E,w=this,S="definition"+i,b=w.definition,_="";if(m&&b.$data){var F=b.validateSchema;o+=" var "+S+" = RULES.custom['"+r+"'].definition; var "+(E="keywordValidate"+i)+" = "+S+".validate;"}else{if(!(P=e.useCustomRule(w,l,e.schema,e)))return;s="validate.schema"+u,E=P.code,v=b.compile,y=b.inline,g=b.macro}var x=E+".errors",$="i"+i,R="ruleErr"+i,D=b.async;if(D&&!e.async)throw new Error("async keyword in sync schema");if(y||g||(o+=x+" = null;"),o+="var "+f+" = errors;var "+p+";",m&&b.$data&&(_+="}",o+=" if ("+s+" === undefined) { "+p+" = true; } else { ",F&&(_+="}",o+=" "+p+" = "+S+".validateSchema("+s+"); if ("+p+") { ")),y)o+=b.statements?" "+P.validate+" ":" "+p+" = "+P.validate+"; ";else if(g){var j=e.util.copy(e);_="";j.level++;var O="valid"+j.level;j.schema=P.validate,j.schemaPath="";var I=e.compositeRule;e.compositeRule=j.compositeRule=!0;var A=e.validate(j).replace(/validate\.schema/g,E);e.compositeRule=j.compositeRule=I,o+=" "+A}else{(z=z||[]).push(o),o="",o+=" "+E+".call( ",o+=e.opts.passContext?"this":"self",o+=v||!1===b.schema?" , "+d+" ":" , "+s+" , "+d+" , validate.schema"+e.schemaPath+" ",o+=" , (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var C=n?"data"+(n-1||""):"parentData",k=n?e.dataPathArr[n]:"parentDataProperty",L=o+=" , "+C+" , "+k+" , rootData ) ";o=z.pop(),!1===b.errors?(o+=" "+p+" = ",D&&(o+="await "),o+=L+"; "):o+=D?" var "+(x="customErrors"+i)+" = null; try { "+p+" = await "+L+"; } catch (e) { "+p+" = false; if (e instanceof ValidationError) "+x+" = e.errors; else throw e; } ":" "+x+" = null; "+p+" = "+L+"; "}if(b.modifying&&(o+=" if ("+C+") "+d+" = "+C+"["+k+"];"),o+=""+_,b.valid)h&&(o+=" if (true) { ");else{var z;o+=" if ( ",void 0===b.valid?(o+=" !",o+=g?""+O:""+p):o+=" "+!b.valid+" ",a=w.keyword,(z=z||[]).push(o+=") { "),(z=z||[]).push(o=""),o="",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ";var T=o;o=z.pop();var q=o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+T+"]); ":" validate.errors = ["+T+"]; return false; ":" var err = "+T+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";o=z.pop(),y?b.errors?"full"!=b.errors&&(o+=" for (var "+$+"="+f+"; "+$+"<errors; "+$+"++) { var "+R+" = vErrors["+$+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+R+".schemaPath === undefined) { "+R+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(o+=" "+R+".schema = "+s+"; "+R+".data = "+d+"; "),o+=" } "):!1===b.errors?o+=" "+q+" ":(o+=" if ("+f+" == errors) { "+q+" } else { for (var "+$+"="+f+"; "+$+"<errors; "+$+"++) { var "+R+" = vErrors["+$+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; if ("+R+".schemaPath === undefined) { "+R+'.schemaPath = "'+c+'"; } ',e.opts.verbose&&(o+=" "+R+".schema = "+s+"; "+R+".data = "+d+"; "),o+=" } } "):g?(o+=" var err = ",!1!==e.createErrors?(o+=" { keyword: '"+(a||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(o+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(o+=" , schema: validate.schema"+u+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+d+" "),o+=" } "):o+=" {} ",o+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&h&&(o+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; ")):!1===b.errors?o+=" "+q+" ":(o+=" if (Array.isArray("+x+")) { if (vErrors === null) vErrors = "+x+"; else vErrors = vErrors.concat("+x+"); errors = vErrors.length; for (var "+$+"="+f+"; "+$+"<errors; "+$+"++) { var "+R+" = vErrors["+$+"]; if ("+R+".dataPath === undefined) "+R+".dataPath = (dataPath || '') + "+e.errorPath+"; "+R+'.schemaPath = "'+c+'"; ',e.opts.verbose&&(o+=" "+R+".schema = "+s+"; "+R+".data = "+d+"; "),o+=" } } else { "+q+" } "),o+=" } ",h&&(o+=" else { ")}return o}},{}],22:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e),p="";d.level++;var f="valid"+d.level,m={},v={},y=e.opts.ownProperties;for(w in i){var g=i[w],P=Array.isArray(g)?v:m;P[w]=g}a+="var "+h+" = errors;";var E=e.errorPath;for(var w in a+="var missing"+s+";",v)if((P=v[w]).length){if(a+=" if ( "+c+e.util.getProperty(w)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(w)+"') "),u){a+=" && ( ";var S=P;if(S)for(var b=-1,_=S.length-1;b<_;){j=S[b+=1],b&&(a+=" || "),a+=" ( ( "+(C=c+(A=e.util.getProperty(j)))+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?j:A)+") ) "}a+=")) { ";var F="missing"+s,x="' + "+F+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,F,!0):E+" + "+F);var $=$||[];$.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var R=a;a=$.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+R+"]); ":" validate.errors = ["+R+"]; return false; ":" var err = "+R+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{a+=" ) { ";var D=P;if(D)for(var j,O=-1,I=D.length-1;O<I;){j=D[O+=1];var A=e.util.getProperty(j),C=(x=e.util.escapeQuotes(j),c+A);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,j,e.opts.jsonPointers)),a+=" if ( "+C+" === undefined ",y&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(j)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+x+"', depsCount: "+P.length+", deps: '"+e.util.escapeQuotes(1==P.length?P[0]:P.join(", "))+"' } ",!1!==e.opts.messages&&(a+=" , message: 'should have ",a+=1==P.length?"property "+e.util.escapeQuotes(P[0]):"properties "+e.util.escapeQuotes(P.join(", ")),a+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}a+=" } ",u&&(p+="}",a+=" else { ")}e.errorPath=E;var k=d.baseId;for(var w in m){e.util.schemaHasRules(g=m[w],e.RULES.all)&&(a+=" "+f+" = true; if ( "+c+e.util.getProperty(w)+" !== undefined ",y&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(w)+"') "),a+=") { ",d.schema=g,d.schemaPath=n+e.util.getProperty(w),d.errSchemaPath=l+"/"+e.util.escapeFragment(w),a+=" "+e.validate(d)+" ",d.baseId=k,a+=" } ",u&&(a+=" if ("+f+") { ",p+="}"))}return u&&(a+=" "+p+" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],23:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var p="i"+s,f="schema"+s;d||(a+=" var "+f+" = validate.schema"+n+";"),a+="var "+h+";",d&&(a+=" if (schema"+s+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+s+")) "+h+" = false; else {"),a+=h+" = false;for (var "+p+"=0; "+p+"<"+f+".length; "+p+"++) if (equal("+c+", "+f+"["+p+"])) { "+h+" = true; break; }",d&&(a+=" } ");var m=m||[];m.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+s+" } ",!1!==e.opts.messages&&(a+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var v=a;return a=m.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }",u&&(a+=" else { "),a}},{}],24:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||"");if(!1===e.opts.format)return u&&(a+=" if (true) { "),a;var h,d=e.opts.$data&&i&&i.$data;h=d?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ","schema"+s):i;var p=e.opts.unknownFormats,f=Array.isArray(p);if(d){a+=" var "+(m="format"+s)+" = formats["+h+"]; var "+(v="isObject"+s)+" = typeof "+m+" == 'object' && !("+m+" instanceof RegExp) && "+m+".validate; var "+(y="formatType"+s)+" = "+v+" && "+m+".type || 'string'; if ("+v+") { ",e.async&&(a+=" var async"+s+" = "+m+".async; "),a+=" "+m+" = "+m+".validate; } if ( ",d&&(a+=" ("+h+" !== undefined && typeof "+h+" != 'string') || "),a+=" (","ignore"!=p&&(a+=" ("+h+" && !"+m+" ",f&&(a+=" && self._opts.unknownFormats.indexOf("+h+") == -1 "),a+=") || "),a+=" ("+m+" && "+y+" == '"+t+"' && !(typeof "+m+" == 'function' ? ",a+=e.async?" (async"+s+" ? await "+m+"("+c+") : "+m+"("+c+")) ":" "+m+"("+c+") ",a+=" : "+m+".test("+c+"))))) {"}else{var m;if(!(m=e.formats[i])){if("ignore"==p)return e.logger.warn('unknown format "'+i+'" ignored in schema at path "'+e.errSchemaPath+'"'),u&&(a+=" if (true) { "),a;if(f&&0<=p.indexOf(i))return u&&(a+=" if (true) { "),a;throw new Error('unknown format "'+i+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,y=(v="object"==typeof m&&!(m instanceof RegExp)&&m.validate)&&m.type||"string";if(v){var g=!0===m.async;m=m.validate}if(y!=t)return u&&(a+=" if (true) { "),a;if(g){if(!e.async)throw new Error("async format in sync schema");a+=" if (!(await "+(P="formats"+e.util.getProperty(i)+".validate")+"("+c+"))) { "}else{a+=" if (! ";var P="formats"+e.util.getProperty(i);v&&(P+=".validate"),a+="function"==typeof m?" "+P+"("+c+") ":" "+P+".test("+c+") ",a+=") { "}}var E=E||[];E.push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",a+=d?""+h:""+e.util.toQuotedString(i),a+=" } ",!1!==e.opts.messages&&(a+=" , message: 'should match format \"",a+=d?"' + "+h+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema: ",a+=d?"validate.schema"+n:""+e.util.toQuotedString(i),a+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var w=a;return a=E.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+w+"]); ":" validate.errors = ["+w+"]; return false; ":" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",u&&(a+=" else { "),a}},{}],25:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,p=e.util.copy(e);p.level++;var f="valid"+p.level,m=e.schema.then,v=e.schema.else,y=void 0!==m&&e.util.schemaHasRules(m,e.RULES.all),g=void 0!==v&&e.util.schemaHasRules(v,e.RULES.all),P=p.baseId;if(y||g){var E;p.createErrors=!1,p.schema=i,p.schemaPath=n,p.errSchemaPath=l,a+=" var "+d+" = errors; var "+h+" = true; ";var w=e.compositeRule;e.compositeRule=p.compositeRule=!0,a+=" "+e.validate(p)+" ",p.baseId=P,p.createErrors=!0,a+=" errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; } ",e.compositeRule=p.compositeRule=w,y?(a+=" if ("+f+") { ",p.schema=e.schema.then,p.schemaPath=e.schemaPath+".then",p.errSchemaPath=e.errSchemaPath+"/then",a+=" "+e.validate(p)+" ",p.baseId=P,a+=" "+h+" = "+f+"; ",y&&g?a+=" var "+(E="ifClause"+s)+" = 'then'; ":E="'then'",a+=" } ",g&&(a+=" else { ")):a+=" if (!"+f+") { ",g&&(p.schema=e.schema.else,p.schemaPath=e.schemaPath+".else",p.errSchemaPath=e.errSchemaPath+"/else",a+=" "+e.validate(p)+" ",p.baseId=P,a+=" "+h+" = "+f+"; ",y&&g?a+=" var "+(E="ifClause"+s)+" = 'else'; ":E="'else'",a+=" } "),a+=" if (!"+h+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+E+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match \"' + "+E+" + '\" schema' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+=" } ",u&&(a+=" else { "),a=e.util.cleanUpCode(a)}else u&&(a+=" if (true) { ");return a}},{}],26:[function(e,r,t){"use strict";r.exports={$ref:e("./ref"),allOf:e("./allOf"),anyOf:e("./anyOf"),$comment:e("./comment"),const:e("./const"),contains:e("./contains"),dependencies:e("./dependencies"),enum:e("./enum"),format:e("./format"),if:e("./if"),items:e("./items"),maximum:e("./_limit"),minimum:e("./_limit"),maxItems:e("./_limitItems"),minItems:e("./_limitItems"),maxLength:e("./_limitLength"),minLength:e("./_limitLength"),maxProperties:e("./_limitProperties"),minProperties:e("./_limitProperties"),multipleOf:e("./multipleOf"),not:e("./not"),oneOf:e("./oneOf"),pattern:e("./pattern"),properties:e("./properties"),propertyNames:e("./propertyNames"),required:e("./required"),uniqueItems:e("./uniqueItems"),validate:e("./validate")}},{"./_limit":12,"./_limitItems":13,"./_limitLength":14,"./_limitProperties":15,"./allOf":16,"./anyOf":17,"./comment":18,"./const":19,"./contains":20,"./dependencies":22,"./enum":23,"./format":24,"./if":25,"./items":27,"./multipleOf":28,"./not":29,"./oneOf":30,"./pattern":31,"./properties":32,"./propertyNames":33,"./ref":34,"./required":35,"./uniqueItems":36,"./validate":37}],27:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,p=e.util.copy(e),f="";p.level++;var m="valid"+p.level,v="i"+s,y=p.dataLevel=e.dataLevel+1,g="data"+y,P=e.baseId;if(a+="var "+d+" = errors;var "+h+";",Array.isArray(i)){var E=e.schema.additionalItems;if(!1===E){a+=" "+h+" = "+c+".length <= "+i.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems";var S=S||[];S.push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+i.length+" } ",!1!==e.opts.messages&&(a+=" , message: 'should NOT have more than "+i.length+" items' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var b=a;a=S.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+b+"]); ":" validate.errors = ["+b+"]; return false; ":" var err = "+b+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",l=w,u&&(f+="}",a+=" else { ")}var _=i;if(_)for(var F,x=-1,$=_.length-1;x<$;)if(F=_[x+=1],e.util.schemaHasRules(F,e.RULES.all)){a+=" "+m+" = true; if ("+c+".length > "+x+") { ";var R=c+"["+x+"]";p.schema=F,p.schemaPath=n+"["+x+"]",p.errSchemaPath=l+"/"+x,p.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),p.dataPathArr[y]=x;var D=e.validate(p);p.baseId=P,e.util.varOccurences(D,g)<2?a+=" "+e.util.varReplace(D,g,R)+" ":a+=" var "+g+" = "+R+"; "+D+" ",a+=" } ",u&&(a+=" if ("+m+") { ",f+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){p.schema=E,p.schemaPath=e.schemaPath+".additionalItems",p.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+c+".length > "+i.length+") { for (var "+v+" = "+i.length+"; "+v+" < "+c+".length; "+v+"++) { ",p.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);R=c+"["+v+"]";p.dataPathArr[y]=v;D=e.validate(p);p.baseId=P,e.util.varOccurences(D,g)<2?a+=" "+e.util.varReplace(D,g,R)+" ":a+=" var "+g+" = "+R+"; "+D+" ",u&&(a+=" if (!"+m+") break; "),a+=" } } ",u&&(a+=" if ("+m+") { ",f+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){p.schema=i,p.schemaPath=n,p.errSchemaPath=l,a+=" for (var "+v+" = 0; "+v+" < "+c+".length; "+v+"++) { ",p.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);R=c+"["+v+"]";p.dataPathArr[y]=v;D=e.validate(p);p.baseId=P,e.util.varOccurences(D,g)<2?a+=" "+e.util.varReplace(D,g,R)+" ":a+=" var "+g+" = "+R+"; "+D+" ",u&&(a+=" if (!"+m+") break; "),a+=" }"}return u&&(a+=" "+f+" if ("+d+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,s+="var division"+o+";if (",d&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+h+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",d&&(s+=" ) ");var p=p||[];p.push(s+=" ) { "),s="",!1!==e.createErrors?(s+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { multipleOf: "+a+" } ",!1!==e.opts.messages&&(s+=" , message: 'should be multiple of ",s+=d?"' + "+a:a+"'"),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var f=s;return s=p.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],29:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e);d.level++;var p="valid"+d.level;if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+=" var "+h+" = errors; ";var f,m=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.createErrors=!1,d.opts.allErrors&&(f=d.opts.allErrors,d.opts.allErrors=!1),a+=" "+e.validate(d)+" ",d.createErrors=!0,f&&(d.opts.allErrors=f),e.compositeRule=d.compositeRule=m;var v=v||[];v.push(a+=" if ("+p+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { errors = "+h+"; if (vErrors !== null) { if ("+h+") vErrors.length = "+h+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+=" var err = ",!1!==e.createErrors?(a+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(a+=" if (false) { ");return a}},{}],30:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d="errs__"+s,p=e.util.copy(e),f="";p.level++;var m="valid"+p.level,v=p.baseId,y="prevValid"+s,g="passingSchemas"+s;a+="var "+d+" = errors , "+y+" = false , "+h+" = false , "+g+" = null; ";var P=e.compositeRule;e.compositeRule=p.compositeRule=!0;var E=i;if(E)for(var w,S=-1,b=E.length-1;S<b;)w=E[S+=1],e.util.schemaHasRules(w,e.RULES.all)?(p.schema=w,p.schemaPath=n+"["+S+"]",p.errSchemaPath=l+"/"+S,a+=" "+e.validate(p)+" ",p.baseId=v):a+=" var "+m+" = true; ",S&&(a+=" if ("+m+" && "+y+") { "+h+" = false; "+g+" = ["+g+", "+S+"]; } else { ",f+="}"),a+=" if ("+m+") { "+h+" = "+y+" = true; "+g+" = "+S+"; }";return e.compositeRule=p.compositeRule=P,a+=f+"if (!"+h+") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+g+" } ",!1!==e.opts.messages&&(a+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),a+="} else { errors = "+d+"; if (vErrors !== null) { if ("+d+") vErrors.length = "+d+"; else vErrors = null; }",e.opts.allErrors&&(a+=" } "),a}},{}],31:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d=e.opts.$data&&n&&n.$data;a=d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n;var p=d?"(new RegExp("+a+"))":e.usePattern(n);s+="if ( ",d&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'string') || ");var f=f||[];f.push(s+=" !"+p+".test("+h+") ) { "),s="",!1!==e.createErrors?(s+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { pattern: ",s+=d?""+a:""+e.util.toQuotedString(n),s+=" } ",!1!==e.opts.messages&&(s+=" , message: 'should match pattern \"",s+=d?"' + "+a+" + '":""+e.util.escapeQuotes(n),s+="\"' "),e.opts.verbose&&(s+=" , schema: ",s+=d?"validate.schema"+l:""+e.util.toQuotedString(n),s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var m=s;return s=f.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",c&&(s+=" else { "),s}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e),p="";d.level++;var f="valid"+d.level,m="key"+s,v="idx"+s,y=d.dataLevel=e.dataLevel+1,g="data"+y,P="dataProperties"+s,E=Object.keys(i||{}),w=e.schema.patternProperties||{},S=Object.keys(w),b=e.schema.additionalProperties,_=E.length||S.length,F=!1===b,x="object"==typeof b&&Object.keys(b).length,$=e.opts.removeAdditional,R=F||x||$,D=e.opts.ownProperties,j=e.baseId,O=e.schema.required;if(O&&(!e.opts.$data||!O.$data)&&O.length<e.opts.loopRequired)var I=e.util.toHash(O);if(a+="var "+h+" = errors;var "+f+" = true;",D&&(a+=" var "+P+" = undefined;"),R){if(a+=D?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+v+"=0; "+v+"<"+P+".length; "+v+"++) { var "+m+" = "+P+"["+v+"]; ":" for (var "+m+" in "+c+") { ",_){if(a+=" var isAdditional"+s+" = !(false ",E.length)if(8<E.length)a+=" || validate.schema"+n+".hasOwnProperty("+m+") ";else{var A=E;if(A)for(var C=-1,k=A.length-1;C<k;)J=A[C+=1],a+=" || "+m+" == "+e.util.toQuotedString(J)+" "}if(S.length){var L=S;if(L)for(var z=-1,T=L.length-1;z<T;)ae=L[z+=1],a+=" || "+e.usePattern(ae)+".test("+m+") "}a+=" ); if (isAdditional"+s+") { "}if("all"==$)a+=" delete "+c+"["+m+"]; ";else{var q=e.errorPath,N="' + "+m+" + '";if(e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers)),F)if($)a+=" delete "+c+"["+m+"]; ";else{var Q=l;l=e.errSchemaPath+"/additionalProperties",(ee=ee||[]).push(a+=" "+f+" = false; "),a="",!1!==e.createErrors?(a+=" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { additionalProperty: '"+N+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is an invalid additional property":"should NOT have additional properties",a+="' "),e.opts.verbose&&(a+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var U=a;a=ee.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=Q,u&&(a+=" break; ")}else if(x)if("failing"==$){a+=" var "+h+" = errors; ";var V=e.compositeRule;e.compositeRule=d.compositeRule=!0,d.schema=b,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);var H=c+"["+m+"]";d.dataPathArr[y]=m;var M=e.validate(d);d.baseId=j,e.util.varOccurences(M,g)<2?a+=" "+e.util.varReplace(M,g,H)+" ":a+=" var "+g+" = "+H+"; "+M+" ",a+=" if (!"+f+") { errors = "+h+"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete "+c+"["+m+"]; } ",e.compositeRule=d.compositeRule=V}else{d.schema=b,d.schemaPath=e.schemaPath+".additionalProperties",d.errSchemaPath=e.errSchemaPath+"/additionalProperties",d.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);H=c+"["+m+"]";d.dataPathArr[y]=m;M=e.validate(d);d.baseId=j,e.util.varOccurences(M,g)<2?a+=" "+e.util.varReplace(M,g,H)+" ":a+=" var "+g+" = "+H+"; "+M+" ",u&&(a+=" if (!"+f+") break; ")}e.errorPath=q}_&&(a+=" } "),a+=" } ",u&&(a+=" if ("+f+") { ",p+="}")}var K=e.opts.useDefaults&&!e.compositeRule;if(E.length){var B=E;if(B)for(var J,Z=-1,G=B.length-1;Z<G;){if(J=B[Z+=1],e.util.schemaHasRules(ie=i[J],e.RULES.all)){var Y=e.util.getProperty(J),W=(H=c+Y,K&&void 0!==ie.default);d.schema=ie,d.schemaPath=n+Y,d.errSchemaPath=l+"/"+e.util.escapeFragment(J),d.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),d.dataPathArr[y]=e.util.toQuotedString(J);M=e.validate(d);if(d.baseId=j,e.util.varOccurences(M,g)<2){M=e.util.varReplace(M,g,H);var X=H}else{X=g;a+=" var "+g+" = "+H+"; "}if(W)a+=" "+M+" ";else{if(I&&I[J]){a+=" if ( "+X+" === undefined ",D&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+f+" = false; ";q=e.errorPath,Q=l;var ee,re=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(q,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(ee=ee||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+re+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";U=a;a=ee.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+U+"]); ":" validate.errors = ["+U+"]; return false; ":" var err = "+U+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=Q,e.errorPath=q,a+=" } else { "}else u?(a+=" if ( "+X+" === undefined ",D&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=") { "+f+" = true; } else { "):(a+=" if ("+X+" !== undefined ",D&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(J)+"') "),a+=" ) { ");a+=" "+M+" } "}}u&&(a+=" if ("+f+") { ",p+="}")}}if(S.length){var te=S;if(te)for(var ae,se=-1,oe=te.length-1;se<oe;){var ie;if(ae=te[se+=1],e.util.schemaHasRules(ie=w[ae],e.RULES.all)){d.schema=ie,d.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ae),d.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ae),a+=D?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+v+"=0; "+v+"<"+P+".length; "+v+"++) { var "+m+" = "+P+"["+v+"]; ":" for (var "+m+" in "+c+") { ",a+=" if ("+e.usePattern(ae)+".test("+m+")) { ",d.errorPath=e.util.getPathExpr(e.errorPath,m,e.opts.jsonPointers);H=c+"["+m+"]";d.dataPathArr[y]=m;M=e.validate(d);d.baseId=j,e.util.varOccurences(M,g)<2?a+=" "+e.util.varReplace(M,g,H)+" ":a+=" var "+g+" = "+H+"; "+M+" ",u&&(a+=" if (!"+f+") break; "),a+=" } ",u&&(a+=" else "+f+" = true; "),a+=" } ",u&&(a+=" if ("+f+") { ",p+="}")}}}return u&&(a+=" "+p+" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="errs__"+s,d=e.util.copy(e);d.level++;var p="valid"+d.level;if(a+="var "+h+" = errors;",e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l;var f="key"+s,m="idx"+s,v="i"+s,y="' + "+f+" + '",g="data"+(d.dataLevel=e.dataLevel+1),P="dataProperties"+s,E=e.opts.ownProperties,w=e.baseId;E&&(a+=" var "+P+" = undefined; "),a+=E?" "+P+" = "+P+" || Object.keys("+c+"); for (var "+m+"=0; "+m+"<"+P+".length; "+m+"++) { var "+f+" = "+P+"["+m+"]; ":" for (var "+f+" in "+c+") { ",a+=" var startErrs"+s+" = errors; ";var S=f,b=e.compositeRule;e.compositeRule=d.compositeRule=!0;var _=e.validate(d);d.baseId=w,e.util.varOccurences(_,g)<2?a+=" "+e.util.varReplace(_,g,S)+" ":a+=" var "+g+" = "+S+"; "+_+" ",e.compositeRule=d.compositeRule=b,a+=" if (!"+p+") { for (var "+v+"=startErrs"+s+"; "+v+"<errors; "+v+"++) { vErrors["+v+"].propertyName = "+f+"; } var err = ",!1!==e.createErrors?(a+=" { keyword: 'propertyNames' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { propertyName: '"+y+"' } ",!1!==e.opts.messages&&(a+=" , message: 'property name \\'"+y+"\\' is invalid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&u&&(a+=e.async?" throw new ValidationError(vErrors); ":" validate.errors = vErrors; return false; "),u&&(a+=" break; "),a+=" } }"}return u&&(a+=" if ("+h+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],34:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s,o=" ",i=e.dataLevel,n=e.schema[r],l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(i||""),h="valid"+e.level;if("#"==n||"#/"==n)s=e.isRoot?(a=e.async,"validate"):(a=!0===e.root.schema.$async,"root.refVal[0]");else{var d=e.resolveRef(e.baseId,n,e.isRoot);if(void 0===d){var p=e.MissingRefError.message(e.baseId,n);if("fail"==e.opts.missingRefs){e.logger.error(p),(y=y||[]).push(o),o="",!1!==e.createErrors?(o+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { ref: '"+e.util.escapeQuotes(n)+"' } ",!1!==e.opts.messages&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(n)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(n)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),o+=" } "):o+=" {} ";var f=o;o=y.pop(),o+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+f+"]); ":" validate.errors = ["+f+"]; return false; ":" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,n,p);e.logger.warn(p),u&&(o+=" if (true) { ")}}else if(d.inline){var m=e.util.copy(e);m.level++;var v="valid"+m.level;m.schema=d.schema,m.schemaPath="",m.errSchemaPath=n,o+=" "+e.validate(m).replace(/validate\.schema/g,d.code)+" ",u&&(o+=" if ("+v+") { ")}else a=!0===d.$async||e.async&&!1!==d.$async,s=d.code}if(s){var y;(y=y||[]).push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+c+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);var g=o+=" , "+(i?"data"+(i-1||""):"parentData")+" , "+(i?e.dataPathArr[i]:"parentDataProperty")+", rootData) ";if(o=y.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(o+=" var "+h+"; "),o+=" try { await "+g+"; ",u&&(o+=" "+h+" = true; "),o+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(o+=" "+h+" = false; "),o+=" } ",u&&(o+=" if ("+h+") { ")}else o+=" if (!"+g+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",u&&(o+=" else { ")}return o}},{}],35:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,u=!e.opts.allErrors,c="data"+(o||""),h="valid"+s,d=e.opts.$data&&i&&i.$data;d&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var p="schema"+s;if(!d)if(i.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var f=[],m=i;if(m)for(var v,y=-1,g=m.length-1;y<g;){v=m[y+=1];var P=e.schema.properties[v];P&&e.util.schemaHasRules(P,e.RULES.all)||(f[f.length]=v)}}else f=i;if(d||f.length){var E=e.errorPath,w=d||e.opts.loopRequired<=f.length,S=e.opts.ownProperties;if(u)if(a+=" var missing"+s+"; ",w){d||(a+=" var "+p+" = validate.schema"+n+"; ");var b="' + "+(D="schema"+s+"["+(x="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,D,e.opts.jsonPointers)),a+=" var "+h+" = true; ",d&&(a+=" if (schema"+s+" === undefined) "+h+" = true; else if (!Array.isArray(schema"+s+")) "+h+" = false; else {"),a+=" for (var "+x+" = 0; "+x+" < "+p+".length; "+x+"++) { "+h+" = "+c+"["+p+"["+x+"]] !== undefined ",S&&(a+=" && Object.prototype.hasOwnProperty.call("+c+", "+p+"["+x+"]) "),a+="; if (!"+h+") break; } ",d&&(a+=" } "),(R=R||[]).push(a+=" if (!"+h+") { "),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";var _=a;a=R.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var F=f;if(F)for(var x=-1,$=F.length-1;x<$;){O=F[x+=1],x&&(a+=" || "),a+=" ( ( "+(k=c+(C=e.util.getProperty(O)))+" === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),a+=") && (missing"+s+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:C)+") ) "}a+=") { ";var R;b="' + "+(D="missing"+s)+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(E,D,!0):E+" + "+D),(R=R||[]).push(a),a="",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ";_=a;a=R.pop(),a+=!e.compositeRule&&u?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else if(w){d||(a+=" var "+p+" = validate.schema"+n+"; ");var D;b="' + "+(D="schema"+s+"["+(x="i"+s)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,D,e.opts.jsonPointers)),d&&(a+=" if ("+p+" && !Array.isArray("+p+")) { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if ("+p+" !== undefined) { "),a+=" for (var "+x+" = 0; "+x+" < "+p+".length; "+x+"++) { if ("+c+"["+p+"["+x+"]] === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", "+p+"["+x+"]) "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ",d&&(a+=" } ")}else{var j=f;if(j)for(var O,I=-1,A=j.length-1;I<A;){O=j[I+=1];var C=e.util.getProperty(O),k=(b=e.util.escapeQuotes(O),c+C);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(E,O,e.opts.jsonPointers)),a+=" if ( "+k+" === undefined ",S&&(a+=" || ! Object.prototype.hasOwnProperty.call("+c+", '"+e.util.escapeQuotes(O)+"') "),a+=") { var err = ",!1!==e.createErrors?(a+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+b+"' } ",!1!==e.opts.messages&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+b+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+c+" "),a+=" } "):a+=" {} ",a+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } "}}e.errorPath=E}else u&&(a+=" if (true) {");return a}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r,t){var a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),u=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(i||""),d="valid"+o,p=e.opts.$data&&n&&n.$data;if(a=p?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ","schema"+o):n,(n||p)&&!1!==e.opts.uniqueItems){p&&(s+=" var "+d+"; if ("+a+" === false || "+a+" === undefined) "+d+" = true; else if (typeof "+a+" != 'boolean') "+d+" = false; else { "),s+=" var i = "+h+".length , "+d+" = true , j; if (i > 1) { ";var f=e.schema.items&&e.schema.items.type,m=Array.isArray(f);if(!f||"object"==f||"array"==f||m&&(0<=f.indexOf("object")||0<=f.indexOf("array")))s+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+h+"[i], "+h+"[j])) { "+d+" = false; break outer; } } } ";else s+=" var itemIndices = {}, item; for (;i--;) { var item = "+h+"[i]; ",s+=" if ("+e.util["checkDataType"+(m?"s":"")](f,"item",!0)+") continue; ",m&&(s+=" if (typeof item == 'string') item = '\"' + item; "),s+=" if (typeof itemIndices[item] == 'number') { "+d+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ";s+=" } ",p&&(s+=" } ");var v=v||[];v.push(s+=" if (!"+d+") { "),s="",!1!==e.createErrors?(s+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema: ",s+=p?"validate.schema"+l:""+n,s+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),s+=" } "):s+=" {} ";var y=s;s=v.pop(),s+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",c&&(s+=" else { ")}else c&&(s+=" if (true) { ");return s}},{}],37:[function(e,r,t){"use strict";r.exports=function(a,e,r){var t="",s=!0===a.schema.$async,o=a.util.schemaHasRulesExcept(a.schema,a.RULES.all,"$ref"),i=a.self._getId(a.schema);if(a.isTop&&(t+=" var validate = ",s&&(a.async=!0,t+="async "),t+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",i&&(a.opts.sourceCode||a.opts.processCode)&&(t+=" /*# sourceURL="+i+" */ ")),"boolean"==typeof a.schema||!o&&!a.schema.$ref){var n=a.level,l=a.dataLevel,u=a.schema[e="false schema"],c=a.schemaPath+a.util.getProperty(e),h=a.errSchemaPath+"/"+e,d=!a.opts.allErrors,p="data"+(l||""),f="valid"+n;if(!1===a.schema){a.isTop?d=!0:t+=" var "+f+" = false; ",(B=B||[]).push(t),t="",!1!==a.createErrors?(t+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: {} ",!1!==a.opts.messages&&(t+=" , message: 'boolean schema is false' "),a.opts.verbose&&(t+=" , schema: false , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),t+=" } "):t+=" {} ";var m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else t+=a.isTop?s?" return data; ":" validate.errors = null; return true; ":" var "+f+" = true; ";return a.isTop&&(t+=" }; return validate; "),t}if(a.isTop){var v=a.isTop;n=a.level=0,l=a.dataLevel=0,p="data";a.rootId=a.resolve.fullPath(a.self._getId(a.root.schema)),a.baseId=a.baseId||a.rootId,delete a.isTop,a.dataPathArr=[void 0],t+=" var vErrors = null; ",t+=" var errors = 0; ",t+=" if (rootData === undefined) rootData = data; "}else{n=a.level,p="data"+((l=a.dataLevel)||"");if(i&&(a.baseId=a.resolve.url(a.baseId,i)),s&&!a.async)throw new Error("async schema in sync schema");t+=" var errs_"+n+" = errors;"}f="valid"+n,d=!a.opts.allErrors;var y="",g="",P=a.schema.type,E=Array.isArray(P);if(P&&a.opts.nullable&&!0===a.schema.nullable&&(E?-1==P.indexOf("null")&&(P=P.concat("null")):"null"!=P&&(P=[P,"null"],E=!0)),E&&1==P.length&&(P=P[0],E=!1),a.schema.$ref&&o){if("fail"==a.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+a.errSchemaPath+'" (see option extendRefs)');!0!==a.opts.extendRefs&&(o=!1,a.logger.warn('$ref: keywords ignored in schema at path "'+a.errSchemaPath+'"'))}if(a.schema.$comment&&a.opts.$comment&&(t+=" "+a.RULES.all.$comment.code(a,"$comment")),P){if(a.opts.coerceTypes)var w=a.util.coerceToTypes(a.opts.coerceTypes,P);var S=a.RULES.types[P];if(w||E||!0===S||S&&!J(S)){c=a.schemaPath+".type",h=a.errSchemaPath+"/type",c=a.schemaPath+".type",h=a.errSchemaPath+"/type";if(t+=" if ("+a.util[E?"checkDataTypes":"checkDataType"](P,p,!0)+") { ",w){var b="dataType"+n,_="coerced"+n;t+=" var "+b+" = typeof "+p+"; ","array"==a.opts.coerceTypes&&(t+=" if ("+b+" == 'object' && Array.isArray("+p+")) "+b+" = 'array'; "),t+=" var "+_+" = undefined; ";var F="",x=w;if(x)for(var $,R=-1,D=x.length-1;R<D;)$=x[R+=1],R&&(t+=" if ("+_+" === undefined) { ",F+="}"),"array"==a.opts.coerceTypes&&"array"!=$&&(t+=" if ("+b+" == 'array' && "+p+".length == 1) { "+_+" = "+p+" = "+p+"[0]; "+b+" = typeof "+p+"; } "),"string"==$?t+=" if ("+b+" == 'number' || "+b+" == 'boolean') "+_+" = '' + "+p+"; else if ("+p+" === null) "+_+" = ''; ":"number"==$||"integer"==$?(t+=" if ("+b+" == 'boolean' || "+p+" === null || ("+b+" == 'string' && "+p+" && "+p+" == +"+p+" ","integer"==$&&(t+=" && !("+p+" % 1)"),t+=")) "+_+" = +"+p+"; "):"boolean"==$?t+=" if ("+p+" === 'false' || "+p+" === 0 || "+p+" === null) "+_+" = false; else if ("+p+" === 'true' || "+p+" === 1) "+_+" = true; ":"null"==$?t+=" if ("+p+" === '' || "+p+" === 0 || "+p+" === false) "+_+" = null; ":"array"==a.opts.coerceTypes&&"array"==$&&(t+=" if ("+b+" == 'string' || "+b+" == 'number' || "+b+" == 'boolean' || "+p+" == null) "+_+" = ["+p+"]; ");(B=B||[]).push(t+=" "+F+" if ("+_+" === undefined) { "),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } else { ";var j=l?"data"+(l-1||""):"parentData";t+=" "+p+" = "+_+"; ",l||(t+="if ("+j+" !== undefined)"),t+=" "+j+"["+(l?a.dataPathArr[l]:"parentDataProperty")+"] = "+_+"; } "}else{(B=B||[]).push(t),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}t+=" } "}}if(a.schema.$ref&&!o)t+=" "+a.RULES.all.$ref.code(a,"$ref")+" ",d&&(t+=" } if (errors === ",t+=v?"0":"errs_"+n,t+=") { ",g+="}");else{var O=a.RULES;if(O)for(var I=-1,A=O.length-1;I<A;)if(J(S=O[I+=1])){if(S.type&&(t+=" if ("+a.util.checkDataType(S.type,p)+") { "),a.opts.useDefaults&&!a.compositeRule)if("object"==S.type&&a.schema.properties){u=a.schema.properties;var C=Object.keys(u);if(C)for(var k,L=-1,z=C.length-1;L<z;){if(void 0!==(q=u[k=C[L+=1]]).default)t+=" if ("+(Q=p+a.util.getProperty(k))+" === undefined ","empty"==a.opts.useDefaults&&(t+=" || "+Q+" === null || "+Q+" === '' "),t+=" ) "+Q+" = ",t+="shared"==a.opts.useDefaults?" "+a.useDefault(q.default)+" ":" "+JSON.stringify(q.default)+" ",t+="; "}}else if("array"==S.type&&Array.isArray(a.schema.items)){var T=a.schema.items;if(T){R=-1;for(var q,N=T.length-1;R<N;){var Q;if(void 0!==(q=T[R+=1]).default)t+=" if ("+(Q=p+"["+R+"]")+" === undefined ","empty"==a.opts.useDefaults&&(t+=" || "+Q+" === null || "+Q+" === '' "),t+=" ) "+Q+" = ",t+="shared"==a.opts.useDefaults?" "+a.useDefault(q.default)+" ":" "+JSON.stringify(q.default)+" ",t+="; "}}}var U=S.rules;if(U)for(var V,H=-1,M=U.length-1;H<M;)if(Z(V=U[H+=1])){var K=V.code(a,V.keyword,S.type);K&&(t+=" "+K+" ",d&&(y+="}"))}if(d&&(t+=" "+y+" ",y=""),S.type&&(t+=" } ",P&&P===S.type&&!w)){var B;c=a.schemaPath+".type",h=a.errSchemaPath+"/type";(B=B||[]).push(t+=" else { "),t="",!1!==a.createErrors?(t+=" { keyword: 'type' , dataPath: (dataPath || '') + "+a.errorPath+" , schemaPath: "+a.util.toQuotedString(h)+" , params: { type: '",t+=E?""+P.join(","):""+P,t+="' } ",!1!==a.opts.messages&&(t+=" , message: 'should be ",t+=E?""+P.join(","):""+P,t+="' "),a.opts.verbose&&(t+=" , schema: validate.schema"+c+" , parentSchema: validate.schema"+a.schemaPath+" , data: "+p+" "),t+=" } "):t+=" {} ";m=t;t=B.pop(),t+=!a.compositeRule&&d?a.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",t+=" } "}d&&(t+=" if (errors === ",t+=v?"0":"errs_"+n,t+=") { ",g+="}")}}function J(e){for(var r=e.rules,t=0;t<r.length;t++)if(Z(r[t]))return!0}function Z(e){return void 0!==a.schema[e.keyword]||e.implements&&function(e){for(var r=e.implements,t=0;t<r.length;t++)if(void 0!==a.schema[r[t]])return!0}(e)}return d&&(t+=" "+g+" "),v?(s?(t+=" if (errors === 0) return data; ",t+=" else throw new ValidationError(vErrors); "):(t+=" validate.errors = vErrors; ",t+=" return errors === 0; "),t+=" }; return validate;"):t+=" var "+f+" = errors === errs_"+n+";",t=a.util.cleanUpCode(t),v&&(t=a.util.finalCleanUpCode(t,s)),t}},{}],38:[function(e,r,t){"use strict";var i=/^[a-z_$][a-z0-9_$-]*$/i,l=e("./dotjs/custom"),a=e("./refs/json-schema-draft-07.json");r.exports={add:function(e,r){var n=this.RULES;if(n.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!i.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(r){if(!(u=u||this.compile(c))(r))throw new Error("custom keyword definition is invalid: "+this.errorsText(u.errors));var t=r.type;if(Array.isArray(t))for(var a=0;a<t.length;a++)o(e,t[a],r);else o(e,t,r);var s=r.metaSchema;s&&(r.$data&&this._opts.$data&&(s={anyOf:[s,{$ref:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#"}]}),r.validateSchema=this.compile(s,!0))}function o(e,r,t){for(var a,s=0;s<n.length;s++){var o=n[s];if(o.type==r){a=o;break}}a||n.push(a={type:r,rules:[]});var i={keyword:e,definition:t,custom:!0,code:l,implements:t.implements};a.rules.push(i),n.custom[e]=i}return n.keywords[e]=n.all[e]=!0,this},get:function(e){var r=this.RULES.custom[e];return r?r.definition:this.RULES.keywords[e]||!1},remove:function(e){var r=this.RULES;delete r.keywords[e],delete r.all[e],delete r.custom[e];for(var t=0;t<r.length;t++)for(var a=r[t].rules,s=0;s<a.length;s++)if(a[s].keyword==e){a.splice(s,1);break}return this}};var u,c={definitions:{simpleTypes:a.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:a.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},{"./dotjs/custom":21,"./refs/json-schema-draft-07.json":40}],39:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON Schema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}},{}],40:[function(e,r,t){r.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}},{}],41:[function(e,r,t){"use strict";var p=Array.isArray,f=Object.keys,m=Object.prototype.hasOwnProperty;r.exports=function e(r,t){if(r===t)return!0;if(r&&t&&"object"==typeof r&&"object"==typeof t){var a,s,o,i=p(r),n=p(t);if(i&&n){if((s=r.length)!=t.length)return!1;for(a=s;0!=a--;)if(!e(r[a],t[a]))return!1;return!0}if(i!=n)return!1;var l=r instanceof Date,u=t instanceof Date;if(l!=u)return!1;if(l&&u)return r.getTime()==t.getTime();var c=r instanceof RegExp,h=t instanceof RegExp;if(c!=h)return!1;if(c&&h)return r.toString()==t.toString();var d=f(r);if((s=d.length)!==f(t).length)return!1;for(a=s;0!=a--;)if(!m.call(t,d[a]))return!1;for(a=s;0!=a--;)if(!e(r[o=d[a]],t[o]))return!1;return!0}return r!=r&&t!=t}},{}],42:[function(e,r,t){"use strict";r.exports=function(e,r){r||(r={}),"function"==typeof r&&(r={cmp:r});var a,l="boolean"==typeof r.cycles&&r.cycles,u=r.cmp&&(a=r.cmp,function(t){return function(e,r){return a({key:e,value:t[e]},{key:r,value:t[r]})}}),c=[];return function e(r){if(r&&r.toJSON&&"function"==typeof r.toJSON&&(r=r.toJSON()),void 0!==r){if("number"==typeof r)return isFinite(r)?""+r:"null";if("object"!=typeof r)return JSON.stringify(r);var t,a;if(Array.isArray(r)){for(a="[",t=0;t<r.length;t++)t&&(a+=","),a+=e(r[t])||"null";return a+"]"}if(null===r)return"null";if(-1!==c.indexOf(r)){if(l)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=c.push(r)-1,o=Object.keys(r).sort(u&&u(r));for(a="",t=0;t<o.length;t++){var i=o[t],n=e(r[i]);n&&(a&&(a+=","),a+=JSON.stringify(i)+":"+n)}return c.splice(s,1),"{"+a+"}"}}(e)}},{}],43:[function(e,r,t){"use strict";var m=r.exports=function(e,r,t){"function"==typeof r&&(t=r,r={}),function e(r,t,a,s,o,i,n,l,u,c){if(s&&"object"==typeof s&&!Array.isArray(s)){for(var h in t(s,o,i,n,l,u,c),s){var d=s[h];if(Array.isArray(d)){if(h in m.arrayKeywords)for(var p=0;p<d.length;p++)e(r,t,a,d[p],o+"/"+h+"/"+p,i,o,h,s,p)}else if(h in m.propsKeywords){if(d&&"object"==typeof d)for(var f in d)e(r,t,a,d[f],o+"/"+h+"/"+f.replace(/~/g,"~0").replace(/\//g,"~1"),i,o,h,s,f)}else(h in m.keywords||r.allKeys&&!(h in m.skipKeywords))&&e(r,t,a,d,o+"/"+h,i,o,h,s)}a(s,o,i,n,l,u,c)}}(r,"function"==typeof(t=r.cb||t)?t:t.pre||function(){},t.post||function(){},e,"",e)};m.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}},{}],44:[function(e,r,t){var a;a=this,function(e){"use strict";function C(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];if(1<r.length){r[0]=r[0].slice(0,-1);for(var a=r.length-1,s=1;s<a;++s)r[s]=r[s].slice(1,-1);return r[a]=r[a].slice(1),r.join("")}return r[0]}function k(e){return"(?:"+e+")"}function a(e){return void 0===e?"undefined":null===e?"null":Object.prototype.toString.call(e).split(" ").pop().split("]").shift().toLowerCase()}function f(e){return e.toUpperCase()}function r(e){var r="[A-Za-z]",t="[0-9]",a=C(t,"[A-Fa-f]"),s=k(k("%[EFef]"+a+"%"+a+a+"%"+a+a)+"|"+k("%[89A-Fa-f]"+a+"%"+a+a)+"|"+k("%"+a+a)),o="[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",i=C("[\\:\\/\\?\\#\\[\\]\\@]",o),n=e?"[\\uE000-\\uF8FF]":"[]",l=C(r,t,"[\\-\\.\\_\\~]",e?"[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]":"[]"),u=k(r+C(r,t,"[\\+\\-\\.]")+"*"),c=k(k(s+"|"+C(l,o,"[\\:]"))+"*"),h=(k(k("25[0-5]")+"|"+k("2[0-4]"+t)+"|"+k("1"+t+t)+"|"+k("[1-9]"+t)+"|"+t),k(k("25[0-5]")+"|"+k("2[0-4]"+t)+"|"+k("1"+t+t)+"|"+k("0?[1-9]"+t)+"|0?0?"+t)),d=k(h+"\\."+h+"\\."+h+"\\."+h),p=k(a+"{1,4}"),f=k(k(p+"\\:"+p)+"|"+d),m=k([k(k(p+"\\:")+"{6}"+f),k("\\:\\:"+k(p+"\\:")+"{5}"+f),k(k(p)+"?\\:\\:"+k(p+"\\:")+"{4}"+f),k(k(k(p+"\\:")+"{0,1}"+p)+"?\\:\\:"+k(p+"\\:")+"{3}"+f),k(k(k(p+"\\:")+"{0,2}"+p)+"?\\:\\:"+k(p+"\\:")+"{2}"+f),k(k(k(p+"\\:")+"{0,3}"+p)+"?\\:\\:"+p+"\\:"+f),k(k(k(p+"\\:")+"{0,4}"+p)+"?\\:\\:"+f),k(k(k(p+"\\:")+"{0,5}"+p)+"?\\:\\:"+p),k(k(k(p+"\\:")+"{0,6}"+p)+"?\\:\\:")].join("|")),v=k(k(l+"|"+s)+"+"),y=(k(m+"\\%25"+v),k("\\["+k(k(m+k("\\%25|\\%(?!"+a+"{2})")+v)+"|"+m+"|"+k("[vV]"+a+"+\\."+C(l,o,"[\\:]")+"+"))+"\\]")),g=k(k(s+"|"+C(l,o))+"*"),P=k(y+"|"+d+"(?!"+g+")|"+g),E=k(t+"*"),w=k(k(c+"@")+"?"+P+k("\\:"+E)+"?"),S=k(s+"|"+C(l,o,"[\\:\\@]")),b=k(S+"*"),_=k(S+"+"),F=k(k(s+"|"+C(l,o,"[\\@]"))+"+"),x=k(k("\\/"+b)+"*"),$=k("\\/"+k(_+x)+"?"),R=k(F+x),D=k(_+x),j="(?!"+S+")",O=(k(x+"|"+$+"|"+R+"|"+D+"|"+j),k(k(S+"|"+C("[\\/\\?]",n))+"*")),I=k(k(S+"|[\\/\\?]")+"*"),A=k(k("\\/\\/"+w+x)+"|"+$+"|"+D+"|"+j);k(k(u+"\\:"+A+k("\\?"+O)+"?"+k("\\#"+I)+"?")+"|"+k(k(k("\\/\\/"+w+x)+"|"+$+"|"+R+"|"+j)+k("\\?"+O)+"?"+k("\\#"+I)+"?")),k(u+"\\:"+A+k("\\?"+O)+"?"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+$+"|"+D+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+$+"|"+R+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k(k("\\/\\/("+k("("+c+")@")+"?("+P+")"+k("\\:("+E+")")+"?)")+"?("+x+"|"+$+"|"+D+"|"+j+")"),k("\\?("+O+")"),k("\\#("+I+")"),k("("+c+")@"),k("\\:("+E+")");return{NOT_SCHEME:new RegExp(C("[^]",r,t,"[\\+\\-\\.]"),"g"),NOT_USERINFO:new RegExp(C("[^\\%\\:]",l,o),"g"),NOT_HOST:new RegExp(C("[^\\%\\[\\]\\:]",l,o),"g"),NOT_PATH:new RegExp(C("[^\\%\\/\\:\\@]",l,o),"g"),NOT_PATH_NOSCHEME:new RegExp(C("[^\\%\\/\\@]",l,o),"g"),NOT_QUERY:new RegExp(C("[^\\%]",l,o,"[\\:\\@\\/\\?]",n),"g"),NOT_FRAGMENT:new RegExp(C("[^\\%]",l,o,"[\\:\\@\\/\\?]"),"g"),ESCAPE:new RegExp(C("[^]",l,o),"g"),UNRESERVED:new RegExp(l,"g"),OTHER_CHARS:new RegExp(C("[^\\%]",l,i),"g"),PCT_ENCODED:new RegExp(s,"g"),IPV4ADDRESS:new RegExp("^("+d+")$"),IPV6ADDRESS:new RegExp("^\\[?("+m+")"+k(k("\\%25|\\%(?!"+a+"{2})")+"("+v+")")+"?\\]?$")}}var c=r(!1),h=r(!0),w=function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,r){var t=[],a=!0,s=!1,o=void 0;try{for(var i,n=e[Symbol.iterator]();!(a=(i=n.next()).done)&&(t.push(i.value),!r||t.length!==r);a=!0);}catch(e){s=!0,o=e}finally{try{!a&&n.return&&n.return()}finally{if(s)throw o}}return t}(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")},A=2147483647,t=/^xn--/,s=/[^\0-\x7E]/,o=/[\x2E\u3002\uFF0E\uFF61]/g,i={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},L=Math.floor,z=String.fromCharCode;function T(e){throw new RangeError(i[e])}function n(e,r){var t=e.split("@"),a="";return 1<t.length&&(a=t[0]+"@",e=t[1]),a+function(e,r){for(var t=[],a=e.length;a--;)t[a]=r(e[a]);return t}((e=e.replace(o,".")).split("."),r).join(".")}function q(e){for(var r=[],t=0,a=e.length;t<a;){var s=e.charCodeAt(t++);if(55296<=s&&s<=56319&&t<a){var o=e.charCodeAt(t++);56320==(64512&o)?r.push(((1023&s)<<10)+(1023&o)+65536):(r.push(s),t--)}else r.push(s)}return r}var N=function(e,r){return e+22+75*(e<26)-((0!=r)<<5)},Q=function(e,r,t){var a=0;for(e=t?L(e/700):e>>1,e+=L(e/r);455<e;a+=36)e=L(e/35);return L(a+36*e/(e+38))},l=function(e){var r,t=[],a=e.length,s=0,o=128,i=72,n=e.lastIndexOf("-");n<0&&(n=0);for(var l=0;l<n;++l)128<=e.charCodeAt(l)&&T("not-basic"),t.push(e.charCodeAt(l));for(var u=0<n?n+1:0;u<a;){for(var c=s,h=1,d=36;;d+=36){a<=u&&T("invalid-input");var p=(r=e.charCodeAt(u++))-48<10?r-22:r-65<26?r-65:r-97<26?r-97:36;(36<=p||p>L((A-s)/h))&&T("overflow"),s+=p*h;var f=d<=i?1:i+26<=d?26:d-i;if(p<f)break;var m=36-f;h>L(A/m)&&T("overflow"),h*=m}var v=t.length+1;i=Q(s-c,v,0==c),L(s/v)>A-o&&T("overflow"),o+=L(s/v),s%=v,t.splice(s++,0,o)}return String.fromCodePoint.apply(String,t)},u=function(e){var r=[],t=(e=q(e)).length,a=128,s=0,o=72,i=!0,n=!1,l=void 0;try{for(var u,c=e[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var h=u.value;h<128&&r.push(z(h))}}catch(e){n=!0,l=e}finally{try{!i&&c.return&&c.return()}finally{if(n)throw l}}var d=r.length,p=d;for(d&&r.push("-");p<t;){var f=A,m=!0,v=!1,y=void 0;try{for(var g,P=e[Symbol.iterator]();!(m=(g=P.next()).done);m=!0){var E=g.value;a<=E&&E<f&&(f=E)}}catch(e){v=!0,y=e}finally{try{!m&&P.return&&P.return()}finally{if(v)throw y}}var w=p+1;f-a>L((A-s)/w)&&T("overflow"),s+=(f-a)*w,a=f;var S=!0,b=!1,_=void 0;try{for(var F,x=e[Symbol.iterator]();!(S=(F=x.next()).done);S=!0){var $=F.value;if($<a&&++s>A&&T("overflow"),$==a){for(var R=s,D=36;;D+=36){var j=D<=o?1:o+26<=D?26:D-o;if(R<j)break;var O=R-j,I=36-j;r.push(z(N(j+O%I,0))),R=L(O/I)}r.push(z(N(R,0))),o=Q(s,w,p==d),s=0,++p}}}catch(e){b=!0,_=e}finally{try{!S&&x.return&&x.return()}finally{if(b)throw _}}++s,++a}return r.join("")},v={version:"2.1.0",ucs2:{decode:q,encode:function(e){return String.fromCodePoint.apply(String,function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}return Array.from(e)}(e))}},decode:l,encode:u,toASCII:function(e){return n(e,function(e){return s.test(e)?"xn--"+u(e):e})},toUnicode:function(e){return n(e,function(e){return t.test(e)?l(e.slice(4).toLowerCase()):e})}},d={};function m(e){var r=e.charCodeAt(0);return r<16?"%0"+r.toString(16).toUpperCase():r<128?"%"+r.toString(16).toUpperCase():r<2048?"%"+(r>>6|192).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase():"%"+(r>>12|224).toString(16).toUpperCase()+"%"+(r>>6&63|128).toString(16).toUpperCase()+"%"+(63&r|128).toString(16).toUpperCase()}function p(e){for(var r="",t=0,a=e.length;t<a;){var s=parseInt(e.substr(t+1,2),16);if(s<128)r+=String.fromCharCode(s),t+=3;else if(194<=s&&s<224){if(6<=a-t){var o=parseInt(e.substr(t+4,2),16);r+=String.fromCharCode((31&s)<<6|63&o)}else r+=e.substr(t,6);t+=6}else if(224<=s){if(9<=a-t){var i=parseInt(e.substr(t+4,2),16),n=parseInt(e.substr(t+7,2),16);r+=String.fromCharCode((15&s)<<12|(63&i)<<6|63&n)}else r+=e.substr(t,9);t+=9}else r+=e.substr(t,3),t+=3}return r}function y(e,t){function r(e){var r=p(e);return r.match(t.UNRESERVED)?r:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,r).replace(t.NOT_USERINFO,m).replace(t.PCT_ENCODED,f)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,r).toLowerCase().replace(t.NOT_HOST,m).replace(t.PCT_ENCODED,f)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,r).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,m).replace(t.PCT_ENCODED,f)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,r).replace(t.NOT_QUERY,m).replace(t.PCT_ENCODED,f)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,r).replace(t.NOT_FRAGMENT,m).replace(t.PCT_ENCODED,f)),e}function S(e){return e.replace(/^0*(.*)/,"$1")||"0"}function b(e,r){var t=e.match(r.IPV4ADDRESS)||[],a=w(t,2)[1];return a?a.split(".").map(S).join("."):e}function g(e,r){var t=e.match(r.IPV6ADDRESS)||[],a=w(t,3),s=a[1],o=a[2];if(s){for(var i=s.toLowerCase().split("::").reverse(),n=w(i,2),l=n[0],u=n[1],c=u?u.split(":").map(S):[],h=l.split(":").map(S),d=r.IPV4ADDRESS.test(h[h.length-1]),p=d?7:8,f=h.length-p,m=Array(p),v=0;v<p;++v)m[v]=c[v]||h[f+v]||"";d&&(m[p-1]=b(m[p-1],r));var y=m.reduce(function(e,r,t){if(!r||"0"===r){var a=e[e.length-1];a&&a.index+a.length===t?a.length++:e.push({index:t,length:1})}return e},[]).sort(function(e,r){return r.length-e.length})[0],g=void 0;if(y&&1<y.length){var P=m.slice(0,y.index),E=m.slice(y.index+y.length);g=P.join(":")+"::"+E.join(":")}else g=m.join(":");return o&&(g+="%"+o),g}return e}var P=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,E=void 0==="".match(/(){0}/)[1];function _(e){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t={},a=!1!==r.iri?h:c;"suffix"===r.reference&&(e=(r.scheme?r.scheme+":":"")+"//"+e);var s=e.match(P);if(s){E?(t.scheme=s[1],t.userinfo=s[3],t.host=s[4],t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=s[7],t.fragment=s[8],isNaN(t.port)&&(t.port=s[5])):(t.scheme=s[1]||void 0,t.userinfo=-1!==e.indexOf("@")?s[3]:void 0,t.host=-1!==e.indexOf("//")?s[4]:void 0,t.port=parseInt(s[5],10),t.path=s[6]||"",t.query=-1!==e.indexOf("?")?s[7]:void 0,t.fragment=-1!==e.indexOf("#")?s[8]:void 0,isNaN(t.port)&&(t.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?s[4]:void 0)),t.host&&(t.host=g(b(t.host,a),a)),t.reference=void 0!==t.scheme||void 0!==t.userinfo||void 0!==t.host||void 0!==t.port||t.path||void 0!==t.query?void 0===t.scheme?"relative":void 0===t.fragment?"absolute":"uri":"same-document",r.reference&&"suffix"!==r.reference&&r.reference!==t.reference&&(t.error=t.error||"URI is not a "+r.reference+" reference.");var o=d[(r.scheme||t.scheme||"").toLowerCase()];if(r.unicodeSupport||o&&o.unicodeSupport)y(t,a);else{if(t.host&&(r.domainHost||o&&o.domainHost))try{t.host=v.toASCII(t.host.replace(a.PCT_ENCODED,p).toLowerCase())}catch(e){t.error=t.error||"Host's domain name can not be converted to ASCII via punycode: "+e}y(t,c)}o&&o.parse&&o.parse(t,r)}else t.error=t.error||"URI can not be parsed.";return t}var F=/^\.\.?\//,x=/^\/\.(\/|$)/,$=/^\/\.\.(\/|$)/,R=/^\/?(?:.|\n)*?(?=\/|$)/;function D(e){for(var r=[];e.length;)if(e.match(F))e=e.replace(F,"");else if(e.match(x))e=e.replace(x,"/");else if(e.match($))e=e.replace($,"/"),r.pop();else if("."===e||".."===e)e="";else{var t=e.match(R);if(!t)throw new Error("Unexpected dot segment condition");var a=t[0];e=e.slice(a.length),r.push(a)}return r.join("")}function j(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.iri?h:c,a=[],s=d[(t.scheme||r.scheme||"").toLowerCase()];if(s&&s.serialize&&s.serialize(r,t),r.host)if(e.IPV6ADDRESS.test(r.host));else if(t.domainHost||s&&s.domainHost)try{r.host=t.iri?v.toUnicode(r.host):v.toASCII(r.host.replace(e.PCT_ENCODED,p).toLowerCase())}catch(e){r.error=r.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+e}y(r,e),"suffix"!==t.reference&&r.scheme&&(a.push(r.scheme),a.push(":"));var o,i,n,l=(i=!1!==t.iri?h:c,n=[],void 0!==(o=r).userinfo&&(n.push(o.userinfo),n.push("@")),void 0!==o.host&&n.push(g(b(String(o.host),i),i).replace(i.IPV6ADDRESS,function(e,r,t){return"["+r+(t?"%25"+t:"")+"]"})),"number"==typeof o.port&&(n.push(":"),n.push(o.port.toString(10))),n.length?n.join(""):void 0);if(void 0!==l&&("suffix"!==t.reference&&a.push("//"),a.push(l),r.path&&"/"!==r.path.charAt(0)&&a.push("/")),void 0!==r.path){var u=r.path;t.absolutePath||s&&s.absolutePath||(u=D(u)),void 0===l&&(u=u.replace(/^\/\//,"/%2F")),a.push(u)}return void 0!==r.query&&(a.push("?"),a.push(r.query)),void 0!==r.fragment&&(a.push("#"),a.push(r.fragment)),a.join("")}function O(e,r){var t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},a={};return arguments[3]||(e=_(j(e,t),t),r=_(j(r,t),t)),!(t=t||{}).tolerant&&r.scheme?(a.scheme=r.scheme,a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(void 0!==r.userinfo||void 0!==r.host||void 0!==r.port?(a.userinfo=r.userinfo,a.host=r.host,a.port=r.port,a.path=D(r.path||""),a.query=r.query):(a.query=r.path?(a.path="/"===r.path.charAt(0)?D(r.path):(a.path=void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?e.path.slice(0,e.path.lastIndexOf("/")+1)+r.path:r.path:"/"+r.path,D(a.path)),r.query):(a.path=e.path,void 0!==r.query?r.query:e.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=r.fragment,a}function I(e,r){return e&&e.toString().replace(r&&r.iri?h.PCT_ENCODED:c.PCT_ENCODED,p)}var U={scheme:"http",domainHost:!0,parse:function(e,r){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,r){return e.port!==("https"!==String(e.scheme).toLowerCase()?80:443)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},V={scheme:"https",domainHost:U.domainHost,parse:U.parse,serialize:U.serialize},H={},M="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",K="[0-9A-Fa-f]",B=k(k("%[EFef]"+K+"%"+K+K+"%"+K+K)+"|"+k("%[89A-Fa-f]"+K+"%"+K+K)+"|"+k("%"+K+K)),J=C("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),Z=new RegExp(M,"g"),G=new RegExp(B,"g"),Y=new RegExp(C("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',J),"g"),W=new RegExp(C("[^]",M,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),X=W;function ee(e){var r=p(e);return r.match(Z)?r:e}var re={scheme:"mailto",parse:function(e,r){var t=e,a=t.to=t.path?t.path.split(","):[];if(t.path=void 0,t.query){for(var s=!1,o={},i=t.query.split("&"),n=0,l=i.length;n<l;++n){var u=i[n].split("=");switch(u[0]){case"to":for(var c=u[1].split(","),h=0,d=c.length;h<d;++h)a.push(c[h]);break;case"subject":t.subject=I(u[1],r);break;case"body":t.body=I(u[1],r);break;default:s=!0,o[I(u[0],r)]=I(u[1],r)}}s&&(t.headers=o)}t.query=void 0;for(var p=0,f=a.length;p<f;++p){var m=a[p].split("@");if(m[0]=I(m[0]),r.unicodeSupport)m[1]=I(m[1],r).toLowerCase();else try{m[1]=v.toASCII(I(m[1],r).toLowerCase())}catch(e){t.error=t.error||"Email address's domain name can not be converted to ASCII via punycode: "+e}a[p]=m.join("@")}return t},serialize:function(e,r){var t,a=e,s=null!=(t=e.to)?t instanceof Array?t:"number"!=typeof t.length||t.split||t.setInterval||t.call?[t]:Array.prototype.slice.call(t):[];if(s){for(var o=0,i=s.length;o<i;++o){var n=String(s[o]),l=n.lastIndexOf("@"),u=n.slice(0,l).replace(G,ee).replace(G,f).replace(Y,m),c=n.slice(l+1);try{c=r.iri?v.toUnicode(c):v.toASCII(I(c,r).toLowerCase())}catch(e){a.error=a.error||"Email address's domain name can not be converted to "+(r.iri?"Unicode":"ASCII")+" via punycode: "+e}s[o]=u+"@"+c}a.path=s.join(",")}var h=e.headers=e.headers||{};e.subject&&(h.subject=e.subject),e.body&&(h.body=e.body);var d=[];for(var p in h)h[p]!==H[p]&&d.push(p.replace(G,ee).replace(G,f).replace(W,m)+"="+h[p].replace(G,ee).replace(G,f).replace(X,m));return d.length&&(a.query=d.join("&")),a}},te=/^([^\:]+)\:(.*)/,ae={scheme:"urn",parse:function(e,r){var t=e.path&&e.path.match(te),a=e;if(t){var s=r.scheme||a.scheme||"urn",o=t[1].toLowerCase(),i=t[2],n=d[s+":"+(r.nid||o)];a.nid=o,a.nss=i,a.path=void 0,n&&(a=n.parse(a,r))}else a.error=a.error||"URN can not be parsed.";return a},serialize:function(e,r){var t=e.nid,a=d[(r.scheme||e.scheme||"urn")+":"+(r.nid||t)];a&&(e=a.serialize(e,r));var s=e;return s.path=(t||r.nid)+":"+e.nss,s}},se=/^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,oe={scheme:"urn:uuid",parse:function(e,r){var t=e;return t.uuid=t.nss,t.nss=void 0,r.tolerant||t.uuid&&t.uuid.match(se)||(t.error=t.error||"UUID is not valid."),t},serialize:function(e,r){var t=e;return t.nss=(e.uuid||"").toLowerCase(),t}};d[U.scheme]=U,d[V.scheme]=V,d[re.scheme]=re,d[ae.scheme]=ae,d[oe.scheme]=oe,e.SCHEMES=d,e.pctEncChar=m,e.pctDecChars=p,e.parse=_,e.removeDotSegments=D,e.serialize=j,e.resolveComponents=O,e.resolve=function(e,r,t){var a=function(e,r){var t=e;if(r)for(var a in r)t[a]=r[a];return t}({scheme:"null"},t);return j(O(_(e,a),_(r,a),a,!0),a)},e.normalize=function(e,r){return"string"==typeof e?e=j(_(e,r),r):"object"===a(e)&&(e=_(j(e,r),r)),e},e.equal=function(e,r,t){return"string"==typeof e?e=j(_(e,t),t):"object"===a(e)&&(e=j(e,t)),"string"==typeof r?r=j(_(r,t),t):"object"===a(r)&&(r=j(r,t)),e===r},e.escapeComponent=function(e,r){return e&&e.toString().replace(r&&r.iri?h.ESCAPE:c.ESCAPE,m)},e.unescapeComponent=I,Object.defineProperty(e,"__esModule",{value:!0})}("object"==typeof t&&void 0!==r?t:a.URI=a.URI||{})},{}],ajv:[function(a,e,r){"use strict";var n=a("./compile"),d=a("./compile/resolve"),t=a("./cache"),p=a("./compile/schema_obj"),s=a("fast-json-stable-stringify"),o=a("./compile/formats"),i=a("./compile/rules"),l=a("./data"),u=a("./compile/util");(e.exports=y).prototype.validate=function(e,r){var t;if("string"==typeof e){if(!(t=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var a=this._addSchema(e);t=a.validate||this._compile(a)}var s=t(r);!0!==t.$async&&(this.errors=t.errors);return s},y.prototype.compile=function(e,r){var t=this._addSchema(e,void 0,r);return t.validate||this._compile(t)},y.prototype.addSchema=function(e,r,t,a){if(Array.isArray(e)){for(var s=0;s<e.length;s++)this.addSchema(e[s],void 0,t,a);return this}var o=this._getId(e);if(void 0!==o&&"string"!=typeof o)throw new Error("schema id must be string");return b(this,r=d.normalizeId(r||o)),this._schemas[r]=this._addSchema(e,t,a,!0),this},y.prototype.addMetaSchema=function(e,r,t){return this.addSchema(e,r,t,!0),this},y.prototype.validateSchema=function(e,r){var t=e.$schema;if(void 0!==t&&"string"!=typeof t)throw new Error("$schema must be a string");if(!(t=t||this._opts.defaultMeta||(a=this,s=a._opts.meta,a._opts.defaultMeta="object"==typeof s?a._getId(s)||s:a.getSchema(f)?f:void 0,a._opts.defaultMeta)))return this.logger.warn("meta-schema not available"),!(this.errors=null);var a,s;var o=this.validate(t,e);if(!o&&r){var i="schema is invalid: "+this.errorsText();if("log"!=this._opts.validateSchema)throw new Error(i);this.logger.error(i)}return o},y.prototype.getSchema=function(e){var r=g(this,e);switch(typeof r){case"object":return r.validate||this._compile(r);case"string":return this.getSchema(r);case"undefined":return function(e,r){var t=d.schema.call(e,{schema:{}},r);if(t){var a=t.schema,s=t.root,o=t.baseId,i=n.call(e,a,s,void 0,o);return e._fragments[r]=new p({ref:r,fragment:!0,schema:a,root:s,baseId:o,validate:i}),i}}(this,e)}},y.prototype.removeSchema=function(e){if(e instanceof RegExp)return P(this,this._schemas,e),P(this,this._refs,e),this;switch(typeof e){case"undefined":return P(this,this._schemas),P(this,this._refs),this._cache.clear(),this;case"string":var r=g(this,e);return r&&this._cache.del(r.cacheKey),delete this._schemas[e],delete this._refs[e],this;case"object":var t=this._opts.serialize,a=t?t(e):e;this._cache.del(a);var s=this._getId(e);s&&(s=d.normalizeId(s),delete this._schemas[s],delete this._refs[s])}return this},y.prototype.addFormat=function(e,r){"string"==typeof r&&(r=new RegExp(r));return this._formats[e]=r,this},y.prototype.errorsText=function(e,r){if(!(e=e||this.errors))return"No errors";for(var t=void 0===(r=r||{}).separator?", ":r.separator,a=void 0===r.dataVar?"data":r.dataVar,s="",o=0;o<e.length;o++){var i=e[o];i&&(s+=a+i.dataPath+" "+i.message+t)}return s.slice(0,-t.length)},y.prototype._addSchema=function(e,r,t,a){if("object"!=typeof e&&"boolean"!=typeof e)throw new Error("schema should be object or boolean");var s=this._opts.serialize,o=s?s(e):e,i=this._cache.get(o);if(i)return i;a=a||!1!==this._opts.addUsedSchema;var n=d.normalizeId(this._getId(e));n&&a&&b(this,n);var l,u=!1!==this._opts.validateSchema&&!r;u&&!(l=n&&n==d.normalizeId(e.$schema))&&this.validateSchema(e,!0);var c=d.ids.call(this,e),h=new p({id:n,schema:e,localRefs:c,cacheKey:o,meta:t});"#"!=n[0]&&a&&(this._refs[n]=h);this._cache.put(o,h),u&&l&&this.validateSchema(e,!0);return h},y.prototype._compile=function(t,e){if(t.compiling)return(t.validate=s).schema=t.schema,s.errors=null,s.root=e||s,!0===t.schema.$async&&(s.$async=!0),s;var r,a;t.compiling=!0,t.meta&&(r=this._opts,this._opts=this._metaOpts);try{a=n.call(this,t.schema,e,t.localRefs)}catch(e){throw delete t.validate,e}finally{t.compiling=!1,t.meta&&(this._opts=r)}return t.validate=a,t.refs=a.refs,t.refVal=a.refVal,t.root=a.root,a;function s(){var e=t.validate,r=e.apply(this,arguments);return s.errors=e.errors,r}},y.prototype.compileAsync=a("./compile/async");var c=a("./keyword");y.prototype.addKeyword=c.add,y.prototype.getKeyword=c.get,y.prototype.removeKeyword=c.remove;var h=a("./compile/error_classes");y.ValidationError=h.Validation,y.MissingRefError=h.MissingRef,y.$dataMetaSchema=l;var f="http://json-schema.org/draft-07/schema",m=["removeAdditional","useDefaults","coerceTypes"],v=["/properties"];function y(e){if(!(this instanceof y))return new y(e);e=this._opts=u.copy(e)||{},function(e){var r=e._opts.logger;if(!1===r)e.logger={log:_,warn:_,error:_};else{if(void 0===r&&(r=console),!("object"==typeof r&&r.log&&r.warn&&r.error))throw new Error("logger must implement log, warn and error methods");e.logger=r}}(this),this._schemas={},this._refs={},this._fragments={},this._formats=o(e.format),this._cache=e.cache||new t,this._loadingSchemas={},this._compilations=[],this.RULES=i(),this._getId=function(e){switch(e.schemaId){case"auto":return S;case"id":return E;default:return w}}(e),e.loopRequired=e.loopRequired||1/0,"property"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=s),this._metaOpts=function(e){for(var r=u.copy(e._opts),t=0;t<m.length;t++)delete r[m[t]];return r}(this),e.formats&&function(e){for(var r in e._opts.formats){var t=e._opts.formats[r];e.addFormat(r,t)}}(this),function(e){var r;e._opts.$data&&(r=a("./refs/data.json"),e.addMetaSchema(r,r.$id,!0));if(!1===e._opts.meta)return;var t=a("./refs/json-schema-draft-07.json");e._opts.$data&&(t=l(t,v));e.addMetaSchema(t,f,!0),e._refs["http://json-schema.org/schema"]=f}(this),"object"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword("nullable",{metaSchema:{type:"boolean"}}),function(e){var r=e._opts.schemas;if(!r)return;if(Array.isArray(r))e.addSchema(r);else for(var t in r)e.addSchema(r[t],t)}(this)}function g(e,r){return r=d.normalizeId(r),e._schemas[r]||e._refs[r]||e._fragments[r]}function P(e,r,t){for(var a in r){var s=r[a];s.meta||t&&!t.test(a)||(e._cache.del(s.cacheKey),delete r[a])}}function E(e){return e.$id&&this.logger.warn("schema $id ignored",e.$id),e.id}function w(e){return e.id&&this.logger.warn("schema id ignored",e.id),e.$id}function S(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error("schema $id is different from id");return e.$id||e.id}function b(e,r){if(e._schemas[r]||e._refs[r])throw new Error('schema with key or id "'+r+'" already exists')}function _(){}},{"./cache":1,"./compile":5,"./compile/async":2,"./compile/error_classes":3,"./compile/formats":4,"./compile/resolve":6,"./compile/rules":7,"./compile/schema_obj":8,"./compile/util":10,"./data":11,"./keyword":38,"./refs/data.json":39,"./refs/json-schema-draft-07.json":40,"fast-json-stable-stringify":42}]},{},[])("ajv")});
//# sourceMappingURL=ajv.min.js.map \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map
index beff544cff..7bfdfdf176 100644
--- a/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map
+++ b/tools/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Cache","_cache","prototype","put","key","value","get","del","clear","2","MissingRefError","MissingRef","compileAsync","schema","meta","callback","_opts","loadSchema","undefined","loadMetaSchemaOf","then","schemaObj","_addSchema","validate","_compileAsync","v","sch","$schema","getSchema","$ref","Promise","resolve","_compile","loadMissingSchema","ref","missingSchema","added","missingRef","schemaPromise","_loadingSchemas","removePromise","addSchema","_refs","_schemas","./error_classes","3","baseId","message","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","errors","ajv","validation","./resolve","4","util","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","formats","mode","copy","date","str","matches","match","year","month","day","time","full","hour","minute","second","fast","date-time","uri","uri-reference","uri-template","email","hostname","ipv4","ipv6","regex","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","test","Z_ANCHOR","RegExp","./util","5","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","checkCompiling","root","index","compIndex","compiling","_compilations","endCompiling","splice","patternCode","patterns","toQuotedString","defaultCode","refValCode","refVal","customRuleCode","vars","arr","statement","compile","localRefs","opts","refs","patternsHash","defaults","defaultsHash","customRules","compilation","callValidate","_formats","RULES","localCompile","cv","$async","sourceCode","source","result","apply","arguments","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","logger","processCode","makeValidate","Function","error","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","inline","regexStr","valueStr","rule","parentSchema","it","validateSchema","definition","valid","errorsText","macro","keyword","../dotjs/validate","fast-deep-equal","fast-json-stable-stringify","6","SchemaObject","traverse","res","resolveSchema","parse","refPath","_getFullPath","getFullPath","_getId","keys","id","parsedRef","resolveUrl","getJsonPointer","ids","schemaId","baseIds","","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","fragment","slice","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","item","Array","isArray","countKeys","count","Infinity","normalize","serialize","TRAILING_SLASH_HASH","replace","./schema_obj","json-schema-traverse","uri-js","7","ruleModules","type","rules","maximum","minimum","properties","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","keywords","concat","custom","../dotjs","8","obj","9","len","pos","charCodeAt","10","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","b","./ucs2length","11","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","stringify","j","anyOf","12","$keyword","$ruleType","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","13","14","unicode","15","16","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","17","$valid","$errs","every","$wasComposite","18","19","20","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","def_customError","22","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","join","arr2","i2","l2","23","$vSchema","24","format","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","25","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","26","allOf","const","contains","dependencies","enum","if","items","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","propertyNames","required","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","27","$additionalItems","additionalItems","$currErrSchemaPath","28","multipleOfPrecision","29","$allErrorsOption","30","$prevValid","$passingSchemas","31","$regexp","32","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","33","$invalidName","34","$refCode","$refVal","$message","missingRefs","__callValidate","35","$propertySch","$loopRequired","36","$itemType","$typeIsArray","37","$refKeywords","$id","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","nullable","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","38","add","_addRule","ruleGroup","rg","remove","./dotjs/custom","39","description","40","title","definitions","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","simpleTypes","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","41","keyList","hasProp","hasOwnProperty","arrA","arrB","dateA","Date","dateB","getTime","regexpA","regexpB","toString","42","cmp","cycles","node","seen","toJSON","isFinite","TypeError","seenIndex","sort","43","cb","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","44","merge","_len","sets","_key","xl","x","subexp","typeOf","shift","toLowerCase","toUpperCase","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS$","ZONEID$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","maxInt","regexPunycode","regexNonASCII","regexSeparators","overflow","not-basic","invalid-input","floor","stringFromCharCode","String","fromCharCode","error$1","RangeError","mapDomain","string","fn","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","codePoint","inputLength","bias","basic","lastIndexOf","oldi","w","baseMinusT","fromCodePoint","encode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","m","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","q","qMinusT","punycode","version","ucs2","from","toConsumableArray","toASCII","toUnicode","SCHEMES","pctEncChar","chr","pctDecChars","newStr","il","parseInt","substr","c2","_c","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","scheme","userinfo","host","query","_stripLeadingZeros","_normalizeIPv4","address","_normalizeIPv6","_matches2","zone","_address$toLowerCase$","reverse","_address$toLowerCase$2","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","reduce","acc","field","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","options","iri","reference","port","isNaN","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","uriTokens","authority","_","$1","$2","charAt","absolutePath","resolveComponents","relative","target","tolerant","unescapeComponent","handler","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","headers","hfields","hfield","toAddrs","_x","_xl","subject","body","_x2","_xl2","addr","setInterval","toAddr","atIdx","localPart","domain","name","URN_PARSE","handler$3","urnComponents","nid","nss","uriComponents","handler$4","uuidComponents","baseURI","relativeURI","schemelessOptions","assign","uriA","uriB","escapeComponent","defineProperty","factory","compileSchema","$dataMetaSchema","schemaKeyRef","_meta","_skipValidation","checkUnique","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","cacheKey","addFormat","separator","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","log","noop","console","setLogger","cache","_get$IdOrId","_get$Id","chooseGetId","errorDataPath","metaOpts","getMetaSchemaOptions","addInitialFormats","$dataSchema","addDefaultMetaSchema","optsSchemas","schemas","addInitialSchemas","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json","./refs/json-schema-draft-07.json"],"mappings":"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","file":"ajv.min.js"} \ No newline at end of file
+{"version":3,"sources":["0"],"names":["f","exports","module","define","amd","window","global","self","this","Ajv","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Cache","_cache","prototype","put","key","value","get","del","clear","2","MissingRefError","MissingRef","compileAsync","schema","meta","callback","_opts","loadSchema","undefined","loadMetaSchemaOf","then","schemaObj","_addSchema","validate","_compileAsync","v","sch","$schema","getSchema","$ref","Promise","resolve","_compile","loadMissingSchema","ref","missingSchema","added","missingRef","schemaPromise","_loadingSchemas","removePromise","addSchema","_refs","_schemas","./error_classes","3","baseId","message","url","normalizeId","fullPath","errorSubclass","Subclass","Object","create","constructor","Validation","errors","ajv","validation","./resolve","4","util","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","formats","mode","copy","date","str","matches","match","year","month","day","time","full","hour","minute","second","fast","date-time","uri","uri-reference","uri-template","email","hostname","ipv4","ipv6","regex","uuid","json-pointer","json-pointer-uri-fragment","relative-json-pointer","dateTime","split","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","test","Z_ANCHOR","RegExp","./util","5","errorClasses","stableStringify","validateGenerator","ucs2length","equal","ValidationError","checkCompiling","root","index","compIndex","compiling","_compilations","endCompiling","splice","patternCode","patterns","toQuotedString","defaultCode","refValCode","refVal","customRuleCode","vars","arr","statement","compile","localRefs","opts","refs","patternsHash","defaults","defaultsHash","customRules","compilation","callValidate","_formats","RULES","localCompile","cv","$async","sourceCode","source","result","apply","arguments","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","logger","processCode","makeValidate","Function","error","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","inline","regexStr","valueStr","rule","parentSchema","it","validateSchema","deps","definition","dependencies","every","keyword","hasOwnProperty","join","valid","errorsText","macro","../dotjs/validate","fast-deep-equal","fast-json-stable-stringify","6","SchemaObject","traverse","res","resolveSchema","parse","refPath","_getFullPath","getFullPath","_getId","keys","id","parsedRef","resolveUrl","getJsonPointer","ids","schemaId","baseIds","","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","fragment","slice","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","item","Array","isArray","countKeys","count","Infinity","normalize","serialize","TRAILING_SLASH_HASH","replace","./schema_obj","json-schema-traverse","uri-js","7","ruleModules","type","rules","maximum","minimum","properties","ALL","all","types","forEach","group","map","implKeywords","k","push","implements","$comment","keywords","concat","custom","../dotjs","8","obj","9","len","pos","charCodeAt","10","checkDataType","dataType","data","negate","EQUAL","AND","OK","NOT","to","checkDataTypes","dataTypes","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","dataVar","varReplace","expr","cleanUpCode","out","EMPTY_ELSE","EMPTY_IF_NO_ELSE","EMPTY_IF_WITH_ELSE","finalCleanUpCode","async","ERRORS_REGEXP","REMOVE_ERRORS_ASYNC","RETURN_ASYNC","RETURN_DATA_ASYNC","REMOVE_ERRORS","RETURN_VALID","RETURN_TRUE","ROOTDATA_REGEXP","REMOVE_ROOTDATA","schemaHasRules","schemaHasRulesExcept","exceptKeyword","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","$data","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","b","./ucs2length","11","KEYWORDS","metaSchema","keywordsJsonPointers","JSON","stringify","j","anyOf","12","$keyword","$ruleType","$schemaValue","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","Math","13","14","unicode","15","16","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","17","$valid","$errs","$wasComposite","18","19","20","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","21","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","passContext","$parentData","$parentDataProperty","def_callRuleValidate","modifying","def_customError","22","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","_errorDataPathProperty","arr2","i2","l2","23","$vSchema","24","format","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","warn","indexOf","$formatRef","25","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","26","allOf","const","contains","enum","if","items","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","not","oneOf","pattern","propertyNames","required","uniqueItems","./_limit","./_limitItems","./_limitLength","./_limitProperties","./allOf","./anyOf","./comment","./const","./contains","./dependencies","./enum","./format","./if","./items","./multipleOf","./not","./oneOf","./pattern","./properties","./propertyNames","./ref","./required","./uniqueItems","./validate","27","$additionalItems","additionalItems","$currErrSchemaPath","28","multipleOfPrecision","29","$allErrorsOption","30","$prevValid","$passingSchemas","31","$regexp","32","$key","$dataProperties","$schemaKeys","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","loopRequired","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","33","$invalidName","34","$refCode","$refVal","$message","missingRefs","__callValidate","35","$propertySch","$loopRequired","36","$itemType","$typeIsArray","37","$refKeywords","$id","$top","rootId","$closingBraces1","$closingBraces2","$typeSchema","nullable","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$bracesCoercion","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","38","add","validateDefinition","definitionSchema","_addRule","ruleGroup","rg","remove","definitions","simpleTypes","./dotjs/custom","./refs/json-schema-draft-07.json","39","description","40","title","schemaArray","nonNegativeInteger","nonNegativeIntegerDefault0","stringArray","readOnly","examples","exclusiveMinimum","exclusiveMaximum","contentMediaType","contentEncoding","else","41","keyList","hasProp","arrA","arrB","dateA","Date","dateB","getTime","regexpA","regexpB","toString","42","cmp","cycles","node","seen","toJSON","isFinite","TypeError","seenIndex","sort","43","cb","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","44","merge","_len","sets","_key","xl","x","subexp","typeOf","shift","toLowerCase","toUpperCase","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS$","ZONEID$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","sliceIterator","maxInt","regexPunycode","regexNonASCII","regexSeparators","overflow","not-basic","invalid-input","floor","stringFromCharCode","String","fromCharCode","error$1","RangeError","mapDomain","string","fn","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","base","decode","input","codePoint","inputLength","bias","basic","lastIndexOf","oldi","w","baseMinusT","fromCodePoint","encode","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_currentValue2","return","basicLength","handledCPCount","m","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","currentValue","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_currentValue","q","qMinusT","punycode","version","ucs2","from","toConsumableArray","toASCII","toUnicode","SCHEMES","pctEncChar","chr","pctDecChars","newStr","il","parseInt","substr","c2","_c","c3","_normalizeComponentEncoding","components","protocol","decodeUnreserved","decStr","scheme","userinfo","host","query","_stripLeadingZeros","_normalizeIPv4","address","_normalizeIPv6","_matches2","zone","_address$toLowerCase$","reverse","_address$toLowerCase$2","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","reduce","acc","field","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","options","iri","reference","port","isNaN","schemeHandler","unicodeSupport","domainHost","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","s","uriTokens","authority","_","$1","$2","charAt","absolutePath","resolveComponents","relative","target","tolerant","unescapeComponent","handler","handler$1","O","VCHAR$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$2","mailtoComponents","unknownHeaders","headers","hfields","hfield","toAddrs","_x","_xl","subject","body","_x2","_xl2","addr","setInterval","toAddr","atIdx","localPart","domain","name","URN_PARSE","handler$3","urnComponents","nid","nss","uriComponents","handler$4","uuidComponents","baseURI","relativeURI","schemelessOptions","assign","uriA","uriB","escapeComponent","defineProperty","factory","compileSchema","$dataMetaSchema","schemaKeyRef","_meta","_skipValidation","checkUnique","addMetaSchema","skipValidation","throwOrLogError","defaultMeta","META_SCHEMA_ID","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","cacheKey","addFormat","separator","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","currentOpts","_metaOpts","_validate","customKeyword","addKeyword","getKeyword","removeKeyword","META_IGNORE_OPTIONS","META_SUPPORT_DATA","log","noop","console","setLogger","cache","_get$IdOrId","_get$Id","chooseGetId","errorDataPath","metaOpts","getMetaSchemaOptions","addInitialFormats","$dataSchema","addDefaultMetaSchema","optsSchemas","schemas","addInitialSchemas","./cache","./compile","./compile/async","./compile/error_classes","./compile/formats","./compile/resolve","./compile/rules","./compile/schema_obj","./compile/util","./data","./keyword","./refs/data.json"],"mappings":"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","file":"ajv.min.js"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ajv/lib/ajv.js b/tools/node_modules/eslint/node_modules/ajv/lib/ajv.js
index 7a83e3b5e0..0a97367fe9 100644
--- a/tools/node_modules/eslint/node_modules/ajv/lib/ajv.js
+++ b/tools/node_modules/eslint/node_modules/ajv/lib/ajv.js
@@ -70,7 +70,7 @@ function Ajv(opts) {
if (opts.formats) addInitialFormats(this);
addDefaultMetaSchema(this);
if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
- if (opts.nullable) this.addKeyword('nullable', {metaSchema: {const: true}});
+ if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});
addInitialSchemas(this);
}
diff --git a/tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js b/tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js
index 8e369db3d5..f4d3f0d58e 100644
--- a/tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js
+++ b/tools/node_modules/eslint/node_modules/ajv/lib/compile/index.js
@@ -255,13 +255,21 @@ function compile(schema, root, localRefs, baseId) {
}
function useCustomRule(rule, schema, parentSchema, it) {
- var validateSchema = rule.definition.validateSchema;
- if (validateSchema && self._opts.validateSchema !== false) {
- var valid = validateSchema(schema);
- if (!valid) {
- var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
- if (self._opts.validateSchema == 'log') self.logger.error(message);
- else throw new Error(message);
+ if (self._opts.validateSchema !== false) {
+ var deps = rule.definition.dependencies;
+ if (deps && !deps.every(function(keyword) {
+ return Object.prototype.hasOwnProperty.call(parentSchema, keyword);
+ }))
+ throw new Error('parent schema must have all required keywords: ' + deps.join(','));
+
+ var validateSchema = rule.definition.validateSchema;
+ if (validateSchema) {
+ var valid = validateSchema(schema);
+ if (!valid) {
+ var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);
+ if (self._opts.validateSchema == 'log') self.logger.error(message);
+ else throw new Error(message);
+ }
}
}
diff --git a/tools/node_modules/eslint/node_modules/ajv/lib/keyword.js b/tools/node_modules/eslint/node_modules/ajv/lib/keyword.js
index 6ed84c10a0..53d95c69d8 100644
--- a/tools/node_modules/eslint/node_modules/ajv/lib/keyword.js
+++ b/tools/node_modules/eslint/node_modules/ajv/lib/keyword.js
@@ -2,6 +2,7 @@
var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;
var customRuleCode = require('./dotjs/custom');
+var metaSchema = require('./refs/json-schema-draft-07.json');
module.exports = {
add: addKeyword,
@@ -9,6 +10,41 @@ module.exports = {
remove: removeKeyword
};
+var definitionSchema = {
+ definitions: {
+ simpleTypes: metaSchema.definitions.simpleTypes
+ },
+ type: 'object',
+ dependencies: {
+ schema: ['validate'],
+ $data: ['validate'],
+ statements: ['inline'],
+ valid: {not: {required: ['macro']}}
+ },
+ properties: {
+ type: metaSchema.properties.type,
+ schema: {type: 'boolean'},
+ statements: {type: 'boolean'},
+ dependencies: {
+ type: 'array',
+ items: {type: 'string'}
+ },
+ metaSchema: {type: 'object'},
+ modifying: {type: 'boolean'},
+ valid: {type: 'boolean'},
+ $data: {type: 'boolean'},
+ async: {type: 'boolean'},
+ errors: {
+ anyOf: [
+ {type: 'boolean'},
+ {const: 'full'}
+ ]
+ }
+ }
+};
+
+var validateDefinition;
+
/**
* Define custom keyword
* @this Ajv
@@ -28,26 +64,22 @@ function addKeyword(keyword, definition) {
throw new Error('Keyword ' + keyword + ' is not a valid identifier');
if (definition) {
- if (definition.macro && definition.valid !== undefined)
- throw new Error('"valid" option cannot be used with macro keywords');
+ validateDefinition = validateDefinition || this.compile(definitionSchema);
+
+ if (!validateDefinition(definition))
+ throw new Error('custom keyword definition is invalid: ' + this.errorsText(validateDefinition.errors));
var dataType = definition.type;
if (Array.isArray(dataType)) {
- var i, len = dataType.length;
- for (i=0; i<len; i++) checkDataType(dataType[i]);
- for (i=0; i<len; i++) _addRule(keyword, dataType[i], definition);
+ for (var i=0; i<dataType.length; i++)
+ _addRule(keyword, dataType[i], definition);
} else {
- if (dataType) checkDataType(dataType);
_addRule(keyword, dataType, definition);
}
- var $data = definition.$data === true && this._opts.$data;
- if ($data && !definition.validate)
- throw new Error('$data support: "validate" function is not defined');
-
var metaSchema = definition.metaSchema;
if (metaSchema) {
- if ($data) {
+ if (definition.$data && this._opts.$data) {
metaSchema = {
anyOf: [
metaSchema,
@@ -88,11 +120,6 @@ function addKeyword(keyword, definition) {
RULES.custom[keyword] = rule;
}
-
- function checkDataType(dataType) {
- if (!RULES.types[dataType]) throw new Error('Unknown type ' + dataType);
- }
-
return this;
}
diff --git a/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-secure.json b/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-secure.json
new file mode 100644
index 0000000000..66faf84f84
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-secure.json
@@ -0,0 +1,94 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-secure.json#",
+ "title": "Meta-schema for the security assessment of JSON Schemas",
+ "description": "If a JSON Schema fails validation against this meta-schema, it may be unsafe to validate untrusted data",
+ "definitions": {
+ "schemaArray": {
+ "type": "array",
+ "minItems": 1,
+ "items": {"$ref": "#"}
+ }
+ },
+ "dependencies": {
+ "patternProperties": {
+ "description": "prevent slow validation of large property names",
+ "required": ["propertyNames"],
+ "properties": {
+ "propertyNames": {
+ "required": ["maxLength"]
+ }
+ }
+ },
+ "uniqueItems": {
+ "description": "prevent slow validation of large non-scalar arrays",
+ "if": {
+ "properties": {
+ "uniqueItems": {"const": true},
+ "items": {
+ "properties": {
+ "type": {
+ "anyOf": [
+ {
+ "enum": ["object", "array"]
+ },
+ {
+ "type": "array",
+ "contains": {"enum": ["object", "array"]}
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "then": {
+ "required": ["maxItems"]
+ }
+ },
+ "pattern": {
+ "description": "prevent slow pattern matching of large strings",
+ "required": ["maxLength"]
+ },
+ "format": {
+ "description": "prevent slow format validation of large strings",
+ "required": ["maxLength"]
+ }
+ },
+ "properties": {
+ "additionalItems": {"$ref": "#"},
+ "additionalProperties": {"$ref": "#"},
+ "dependencies": {
+ "additionalProperties": {
+ "anyOf": [
+ {"type": "array"},
+ {"$ref": "#"}
+ ]
+ }
+ },
+ "items": {
+ "anyOf": [
+ {"$ref": "#"},
+ {"$ref": "#/definitions/schemaArray"}
+ ]
+ },
+ "definitions": {
+ "additionalProperties": {"$ref": "#"}
+ },
+ "patternProperties": {
+ "additionalProperties": {"$ref": "#"}
+ },
+ "properties": {
+ "additionalProperties": {"$ref": "#"}
+ },
+ "if": {"$ref": "#"},
+ "then": {"$ref": "#"},
+ "else": {"$ref": "#"},
+ "allOf": {"$ref": "#/definitions/schemaArray"},
+ "anyOf": {"$ref": "#/definitions/schemaArray"},
+ "oneOf": {"$ref": "#/definitions/schemaArray"},
+ "not": {"$ref": "#"},
+ "contains": {"$ref": "#"},
+ "propertyNames": {"$ref": "#"}
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/ajv/package.json b/tools/node_modules/eslint/node_modules/ajv/package.json
index 85c7b9fce1..220426eb13 100644
--- a/tools/node_modules/eslint/node_modules/ajv/package.json
+++ b/tools/node_modules/eslint/node_modules/ajv/package.json
@@ -28,7 +28,7 @@
"glob": "^7.0.0",
"if-node-version": "^1.0.0",
"js-beautify": "^1.7.3",
- "jshint": "^2.9.4",
+ "jshint": "2.9.7",
"json-schema-test": "^2.0.0",
"karma": "^3.0.0",
"karma-chrome-launcher": "^2.2.0",
@@ -96,5 +96,5 @@
},
"tonicExampleFilename": ".tonic_example.js",
"typings": "lib/ajv.d.ts",
- "version": "6.7.0"
+ "version": "6.9.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt b/tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt
deleted file mode 100644
index e42a04b646..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2013-2017 by Andrea Giammarchi - @WebReflection
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/circular-json/README.md b/tools/node_modules/eslint/node_modules/circular-json/README.md
deleted file mode 100644
index 9cc003ef28..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/README.md
+++ /dev/null
@@ -1,135 +0,0 @@
-CircularJSON
-============
-
-![Downloads](https://img.shields.io/npm/dm/circular-json.svg) [![Build Status](https://travis-ci.org/WebReflection/circular-json.svg?branch=master)](https://travis-ci.org/WebReflection/circular-json) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/circular-json/badge.svg?branch=master)](https://coveralls.io/github/WebReflection/circular-json?branch=master) [![donate](https://img.shields.io/badge/$-donate-ff69b4.svg?maxAge=2592000&style=flat)](https://github.com/WebReflection/donate)
-
-Serializes and deserializes otherwise valid JSON objects containing circular references into and from a specialized JSON format.
-
-- - -
-
-### A Working Solution To A Common Problem
-A usage example:
-
-```JavaScript
-var object = {};
-object.arr = [
- object, object
-];
-object.arr.push(object.arr);
-object.obj = object;
-
-var serialized = CircularJSON.stringify(object);
-// '{"arr":["~","~","~arr"],"obj":"~"}'
-// NOTE: CircularJSON DOES NOT parse JS
-// it handles receiver and reviver callbacks
-
-var unserialized = CircularJSON.parse(serialized);
-// { arr: [ [Circular], [Circular] ],
-// obj: [Circular] }
-
-unserialized.obj === unserialized;
-unserialized.arr[0] === unserialized;
-unserialized.arr.pop() === unserialized.arr;
-```
-
-A quick summary:
-
- * uses `~` as a special prefix symbol to denote which parent the reference belongs to (i.e. `~root~child1~child2`)
- * reasonably fast in both serialization and deserialization
- * compact serialization for easier and slimmer transportation across environments
- * [tested and covered](test/circular-json.js) over nasty structures too
- * compatible with all JavaScript engines
-
-Node Installation & Usage
-============
-
-```bash
-npm install --save circular-json
-```
-
-```javascript
-'use strict';
-
-var
- CircularJSON = require('circular-json'),
- obj = { foo: 'bar' },
- str
-;
-
-obj.self = obj;
-str = CircularJSON.stringify(obj);
-```
-
-There are no dependencies.
-
-Browser Installation & Usage
-================
-
-* Global: <build/circular-json.js>
-* AMD: <build/circular-json.amd.js>
-* CommonJS: <build/circular-json.node.js>
-
-(generated via [gitstrap](https://github.com/WebReflection/gitstrap))
-
-```html
-<script src="build/circular-json.js"></script>
-```
-
-```javascript
-'use strict';
-
-var CircularJSON = window.CircularJSON
- , obj = { foo: 'bar' }
- , str
- ;
-
-obj.self = obj;
-str = CircularJSON.stringify(obj);
-```
-
-NOTE: Platforms without native JSON (i.e. MSIE <= 8) requires `json3.js` or similar.
-
-It is also *a bad idea* to `CircularJSON.parse(JSON.stringify(object))` because of those manipulation used in `CircularJSON.stringify()` able to make parsing safe and secure.
-
-As summary: `CircularJSON.parse(CircularJSON.stringify(object))` is the way to go, same is for `JSON.parse(JSON.stringify(object))`.
-
-API
-===
-
-It's the same as native JSON, except the fourth parameter `placeholder`, which circular references to be replaced with `"[Circular]"` (i.e. for logging).
-
-* CircularJSON.stringify(object, replacer, spacer, placeholder)
-* CircularJSON.parse(string, reviver)
-
-Bear in mind `JSON.parse(CircularJSON.stringify(object))` will work but not produce the expected output.
-
-Similar Libraries
-=======
-
-### Why Not the [@izs](https://twitter.com/izs) One
-The module [json-stringify-safe](https://github.com/isaacs/json-stringify-safe) seems to be for `console.log()` but it's completely pointless for `JSON.parse()`, being latter one unable to retrieve back the initial structure. Here an example:
-
-```JavaScript
-// a logged object with circular references
-{
- "circularRef": "[Circular]",
- "list": [
- "[Circular]",
- "[Circular]"
- ]
-}
-// what do we do with above output ?
-```
-
-Just type this in your `node` console: `var o = {}; o.a = o; console.log(o);`. The output will be `{ a: [Circular] }` ... good, but that ain't really solving the problem.
-
-However, if that's all you need, the function used to create that kind of output is probably faster than `CircularJSON` and surely fits in less lines of code.
-
-
-### Why Not {{put random name}} Solution
-So here the thing: circular references can be wrong but, if there is a need for them, any attempt to ignore them or remove them can be considered just a failure.
-
-Not because the method is bad or it's not working, simply because the circular info, the one we needed and used in the first place, is lost!
-
-In this case, `CircularJSON` does even more than just solve circular and recursions: it maps all same objects so that less memory is used as well on deserialization as less bandwidth too!
-It's able to redefine those references back later on so the way we store is the way we retrieve and in a reasonably performant way, also trusting the snappy and native `JSON` methods to iterate.
diff --git a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js
deleted file mode 100644
index acf1c2599e..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! (C) WebReflection Mit Style License */
-var CircularJSON=function(e,t){function l(e,t,o){var u=[],f=[e],l=[e],c=[o?n:"[Circular]"],h=e,p=1,d;return function(e,v){return t&&(v=t.call(this,e,v)),e!==""&&(h!==this&&(d=p-a.call(f,this)-1,p-=d,f.splice(p,f.length),u.splice(p-1,u.length),h=this),typeof v=="object"&&v?(a.call(f,v)<0&&f.push(h=v),p=f.length,d=a.call(l,v),d<0?(d=l.push(v)-1,o?(u.push((""+e).replace(s,r)),c[d]=n+u.join(n)):c[d]=c[0]):v=c[d]):typeof v=="string"&&o&&(v=v.replace(r,i).replace(n,r))),v}}function c(e,t){for(var r=0,i=t.length;r<i;e=e[t[r++].replace(o,n)]);return e}function h(e){return function(t,s){var o=typeof s=="string";return o&&s.charAt(0)===n?new f(s.slice(1)):(t===""&&(s=v(s,s,{})),o&&(s=s.replace(u,"$1"+n).replace(i,r)),e?e.call(this,t,s):s)}}function p(e,t,n){for(var r=0,i=t.length;r<i;r++)t[r]=v(e,t[r],n);return t}function d(e,t,n){for(var r in t)t.hasOwnProperty(r)&&(t[r]=v(e,t[r],n));return t}function v(e,t,r){return t instanceof Array?p(e,t,r):t instanceof f?t.length?r.hasOwnProperty(t)?r[t]:r[t]=c(e,t.split(n)):e:t instanceof Object?d(e,t,r):t}function m(t,n,r,i){return e.stringify(t,l(t,n,!i),r)}function g(t,n){return e.parse(t,h(n))}var n="~",r="\\x"+("0"+n.charCodeAt(0).toString(16)).slice(-2),i="\\"+r,s=new t(r,"g"),o=new t(i,"g"),u=new t("(?:^|([^\\\\]))"+i),a=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},f=String;return{stringify:m,parse:g}}(JSON,RegExp); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js
deleted file mode 100644
index 5ad5ffad85..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.max.js
+++ /dev/null
@@ -1,189 +0,0 @@
-/*!
-Copyright (C) 2013 by WebReflection
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-var CircularJSON = (function(JSON, RegExp){
-var
- // should be a not so common char
- // possibly one JSON does not encode
- // possibly one encodeURIComponent does not encode
- // right now this char is '~' but this might change in the future
- specialChar = '~',
- safeSpecialChar = '\\x' + (
- '0' + specialChar.charCodeAt(0).toString(16)
- ).slice(-2),
- escapedSafeSpecialChar = '\\' + safeSpecialChar,
- specialCharRG = new RegExp(safeSpecialChar, 'g'),
- safeSpecialCharRG = new RegExp(escapedSafeSpecialChar, 'g'),
-
- safeStartWithSpecialCharRG = new RegExp('(?:^|([^\\\\]))' + escapedSafeSpecialChar),
-
- indexOf = [].indexOf || function(v){
- for(var i=this.length;i--&&this[i]!==v;);
- return i;
- },
- $String = String // there's no way to drop warnings in JSHint
- // about new String ... well, I need that here!
- // faked, and happy linter!
-;
-
-function generateReplacer(value, replacer, resolve) {
- var
- path = [],
- all = [value],
- seen = [value],
- mapp = [resolve ? specialChar : '[Circular]'],
- last = value,
- lvl = 1,
- i
- ;
- return function(key, value) {
- // the replacer has rights to decide
- // if a new object should be returned
- // or if there's some key to drop
- // let's call it here rather than "too late"
- if (replacer) value = replacer.call(this, key, value);
-
- // did you know ? Safari passes keys as integers for arrays
- // which means if (key) when key === 0 won't pass the check
- if (key !== '') {
- if (last !== this) {
- i = lvl - indexOf.call(all, this) - 1;
- lvl -= i;
- all.splice(lvl, all.length);
- path.splice(lvl - 1, path.length);
- last = this;
- }
- // console.log(lvl, key, path);
- if (typeof value === 'object' && value) {
- // if object isn't referring to parent object, add to the
- // object path stack. Otherwise it is already there.
- if (indexOf.call(all, value) < 0) {
- all.push(last = value);
- }
- lvl = all.length;
- i = indexOf.call(seen, value);
- if (i < 0) {
- i = seen.push(value) - 1;
- if (resolve) {
- // key cannot contain specialChar but could be not a string
- path.push(('' + key).replace(specialCharRG, safeSpecialChar));
- mapp[i] = specialChar + path.join(specialChar);
- } else {
- mapp[i] = mapp[0];
- }
- } else {
- value = mapp[i];
- }
- } else {
- if (typeof value === 'string' && resolve) {
- // ensure no special char involved on deserialization
- // in this case only first char is important
- // no need to replace all value (better performance)
- value = value .replace(safeSpecialChar, escapedSafeSpecialChar)
- .replace(specialChar, safeSpecialChar);
- }
- }
- }
- return value;
- };
-}
-
-function retrieveFromPath(current, keys) {
- for(var i = 0, length = keys.length; i < length; current = current[
- // keys should be normalized back here
- keys[i++].replace(safeSpecialCharRG, specialChar)
- ]);
- return current;
-}
-
-function generateReviver(reviver) {
- return function(key, value) {
- var isString = typeof value === 'string';
- if (isString && value.charAt(0) === specialChar) {
- return new $String(value.slice(1));
- }
- if (key === '') value = regenerate(value, value, {});
- // again, only one needed, do not use the RegExp for this replacement
- // only keys need the RegExp
- if (isString) value = value .replace(safeStartWithSpecialCharRG, '$1' + specialChar)
- .replace(escapedSafeSpecialChar, safeSpecialChar);
- return reviver ? reviver.call(this, key, value) : value;
- };
-}
-
-function regenerateArray(root, current, retrieve) {
- for (var i = 0, length = current.length; i < length; i++) {
- current[i] = regenerate(root, current[i], retrieve);
- }
- return current;
-}
-
-function regenerateObject(root, current, retrieve) {
- for (var key in current) {
- if (current.hasOwnProperty(key)) {
- current[key] = regenerate(root, current[key], retrieve);
- }
- }
- return current;
-}
-
-function regenerate(root, current, retrieve) {
- return current instanceof Array ?
- // fast Array reconstruction
- regenerateArray(root, current, retrieve) :
- (
- current instanceof $String ?
- (
- // root is an empty string
- current.length ?
- (
- retrieve.hasOwnProperty(current) ?
- retrieve[current] :
- retrieve[current] = retrieveFromPath(
- root, current.split(specialChar)
- )
- ) :
- root
- ) :
- (
- current instanceof Object ?
- // dedicated Object parser
- regenerateObject(root, current, retrieve) :
- // value as it is
- current
- )
- )
- ;
-}
-
-function stringifyRecursion(value, replacer, space, doNotResolve) {
- return JSON.stringify(value, generateReplacer(value, replacer, !doNotResolve), space);
-}
-
-function parseRecursion(text, reviver) {
- return JSON.parse(text, generateReviver(reviver));
-}
-return {
- stringify: stringifyRecursion,
- parse: parseRecursion
-};
-}(JSON, RegExp)); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js b/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js
deleted file mode 100644
index 576266fe65..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/build/circular-json.node.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/*!
-Copyright (C) 2013 by WebReflection
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-*/
-var
- // should be a not so common char
- // possibly one JSON does not encode
- // possibly one encodeURIComponent does not encode
- // right now this char is '~' but this might change in the future
- specialChar = '~',
- safeSpecialChar = '\\x' + (
- '0' + specialChar.charCodeAt(0).toString(16)
- ).slice(-2),
- escapedSafeSpecialChar = '\\' + safeSpecialChar,
- specialCharRG = new RegExp(safeSpecialChar, 'g'),
- safeSpecialCharRG = new RegExp(escapedSafeSpecialChar, 'g'),
-
- safeStartWithSpecialCharRG = new RegExp('(?:^|([^\\\\]))' + escapedSafeSpecialChar),
-
- indexOf = [].indexOf || function(v){
- for(var i=this.length;i--&&this[i]!==v;);
- return i;
- },
- $String = String // there's no way to drop warnings in JSHint
- // about new String ... well, I need that here!
- // faked, and happy linter!
-;
-
-function generateReplacer(value, replacer, resolve) {
- var
- path = [],
- all = [value],
- seen = [value],
- mapp = [resolve ? specialChar : '[Circular]'],
- last = value,
- lvl = 1,
- i
- ;
- return function(key, value) {
- // the replacer has rights to decide
- // if a new object should be returned
- // or if there's some key to drop
- // let's call it here rather than "too late"
- if (replacer) value = replacer.call(this, key, value);
-
- // did you know ? Safari passes keys as integers for arrays
- // which means if (key) when key === 0 won't pass the check
- if (key !== '') {
- if (last !== this) {
- i = lvl - indexOf.call(all, this) - 1;
- lvl -= i;
- all.splice(lvl, all.length);
- path.splice(lvl - 1, path.length);
- last = this;
- }
- // console.log(lvl, key, path);
- if (typeof value === 'object' && value) {
- // if object isn't referring to parent object, add to the
- // object path stack. Otherwise it is already there.
- if (indexOf.call(all, value) < 0) {
- all.push(last = value);
- }
- lvl = all.length;
- i = indexOf.call(seen, value);
- if (i < 0) {
- i = seen.push(value) - 1;
- if (resolve) {
- // key cannot contain specialChar but could be not a string
- path.push(('' + key).replace(specialCharRG, safeSpecialChar));
- mapp[i] = specialChar + path.join(specialChar);
- } else {
- mapp[i] = mapp[0];
- }
- } else {
- value = mapp[i];
- }
- } else {
- if (typeof value === 'string' && resolve) {
- // ensure no special char involved on deserialization
- // in this case only first char is important
- // no need to replace all value (better performance)
- value = value .replace(safeSpecialChar, escapedSafeSpecialChar)
- .replace(specialChar, safeSpecialChar);
- }
- }
- }
- return value;
- };
-}
-
-function retrieveFromPath(current, keys) {
- for(var i = 0, length = keys.length; i < length; current = current[
- // keys should be normalized back here
- keys[i++].replace(safeSpecialCharRG, specialChar)
- ]);
- return current;
-}
-
-function generateReviver(reviver) {
- return function(key, value) {
- var isString = typeof value === 'string';
- if (isString && value.charAt(0) === specialChar) {
- return new $String(value.slice(1));
- }
- if (key === '') value = regenerate(value, value, {});
- // again, only one needed, do not use the RegExp for this replacement
- // only keys need the RegExp
- if (isString) value = value .replace(safeStartWithSpecialCharRG, '$1' + specialChar)
- .replace(escapedSafeSpecialChar, safeSpecialChar);
- return reviver ? reviver.call(this, key, value) : value;
- };
-}
-
-function regenerateArray(root, current, retrieve) {
- for (var i = 0, length = current.length; i < length; i++) {
- current[i] = regenerate(root, current[i], retrieve);
- }
- return current;
-}
-
-function regenerateObject(root, current, retrieve) {
- for (var key in current) {
- if (current.hasOwnProperty(key)) {
- current[key] = regenerate(root, current[key], retrieve);
- }
- }
- return current;
-}
-
-function regenerate(root, current, retrieve) {
- return current instanceof Array ?
- // fast Array reconstruction
- regenerateArray(root, current, retrieve) :
- (
- current instanceof $String ?
- (
- // root is an empty string
- current.length ?
- (
- retrieve.hasOwnProperty(current) ?
- retrieve[current] :
- retrieve[current] = retrieveFromPath(
- root, current.split(specialChar)
- )
- ) :
- root
- ) :
- (
- current instanceof Object ?
- // dedicated Object parser
- regenerateObject(root, current, retrieve) :
- // value as it is
- current
- )
- )
- ;
-}
-
-function stringifyRecursion(value, replacer, space, doNotResolve) {
- return JSON.stringify(value, generateReplacer(value, replacer, !doNotResolve), space);
-}
-
-function parseRecursion(text, reviver) {
- return JSON.parse(text, generateReviver(reviver));
-}
-this.stringify = stringifyRecursion;
-this.parse = parseRecursion; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/circular-json/package.json b/tools/node_modules/eslint/node_modules/circular-json/package.json
deleted file mode 100644
index 4bf300177c..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "author": {
- "name": "Andrea Giammarchi",
- "url": "http://webreflection.blogspot.com/"
- },
- "bugs": {
- "url": "https://github.com/WebReflection/circular-json/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "JSON does not handle circular references. This version does",
- "devDependencies": {
- "coveralls": "^2.13.0",
- "istanbul": "^0.4.5",
- "tiny-cdn": "^0.7.0",
- "tressa": "^0.3.1"
- },
- "generator": "https://github.com/WebReflection/gitstrap",
- "homepage": "https://github.com/WebReflection/circular-json",
- "keywords": [
- "JSON",
- "circular",
- "reference",
- "recursive",
- "recursion",
- "parse",
- "stringify"
- ],
- "license": "MIT",
- "main": "./build/circular-json.node.js",
- "name": "circular-json",
- "repository": {
- "type": "git",
- "url": "git://github.com/WebReflection/circular-json.git"
- },
- "scripts": {
- "coveralls": "cat ./coverage/lcov.info | coveralls",
- "test": "istanbul cover test/circular-json.js",
- "web": "$(sleep 2 && open http://0.0.0.0:7151/) & tiny-cdn run ./"
- },
- "version": "0.3.3"
-} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/circular-json/template/license.after b/tools/node_modules/eslint/node_modules/circular-json/template/license.after
deleted file mode 100644
index d7365df165..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/template/license.after
+++ /dev/null
@@ -1,2 +0,0 @@
-
-*/
diff --git a/tools/node_modules/eslint/node_modules/circular-json/template/license.before b/tools/node_modules/eslint/node_modules/circular-json/template/license.before
deleted file mode 100644
index bf11147bdb..0000000000
--- a/tools/node_modules/eslint/node_modules/circular-json/template/license.before
+++ /dev/null
@@ -1 +0,0 @@
-/*!
diff --git a/tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js b/tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js
index 1665afe9ef..d246e33f32 100644
--- a/tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js
+++ b/tools/node_modules/eslint/node_modules/doctrine/lib/doctrine.js
@@ -28,7 +28,6 @@
return func.call(obj, name);
};
}());
-
function shallowCopy(obj) {
var ret = {}, key;
for (key in obj) {
diff --git a/tools/node_modules/eslint/node_modules/doctrine/package.json b/tools/node_modules/eslint/node_modules/doctrine/package.json
index 41e902d3b8..b9a378a090 100644
--- a/tools/node_modules/eslint/node_modules/doctrine/package.json
+++ b/tools/node_modules/eslint/node_modules/doctrine/package.json
@@ -9,10 +9,10 @@
"deprecated": false,
"description": "JSDoc parser",
"devDependencies": {
- "coveralls": "^2.11.2",
+ "coveralls": "^3.0.1",
"dateformat": "^1.0.11",
"eslint": "^1.10.3",
- "eslint-release": "^0.10.0",
+ "eslint-release": "^1.0.0",
"linefix": "^0.1.1",
"mocha": "^3.4.2",
"npm-license": "^0.3.1",
@@ -26,7 +26,7 @@
"lib": "./lib"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6.0.0"
},
"files": [
"lib"
@@ -52,14 +52,15 @@
"url": "git+https://github.com/eslint/doctrine.git"
},
"scripts": {
- "alpharelease": "eslint-prerelease alpha",
- "betarelease": "eslint-prerelease beta",
- "ci-release": "eslint-ci-release",
"coveralls": "nyc report --reporter=text-lcov | coveralls",
+ "generate-alpharelease": "eslint-generate-prerelease alpha",
+ "generate-betarelease": "eslint-generate-prerelease beta",
+ "generate-rcrelease": "eslint-generate-prerelease rc",
+ "generate-release": "eslint-generate-release",
"lint": "eslint lib/",
"pretest": "npm run lint",
- "release": "eslint-release",
+ "publish-release": "eslint-publish-release",
"test": "nyc mocha"
},
- "version": "2.1.0"
+ "version": "3.0.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/LICENSE-MIT.txt b/tools/node_modules/eslint/node_modules/emoji-regex/LICENSE-MIT.txt
new file mode 100644
index 0000000000..a41e0a7ef9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/LICENSE-MIT.txt
@@ -0,0 +1,20 @@
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/README.md b/tools/node_modules/eslint/node_modules/emoji-regex/README.md
new file mode 100644
index 0000000000..37cf14e01f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/README.md
@@ -0,0 +1,73 @@
+# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex)
+
+_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
+
+This repository contains a script that generates this regular expression based on [the data from Unicode Technical Report #51](https://github.com/mathiasbynens/unicode-tr51). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
+
+## Installation
+
+Via [npm](https://www.npmjs.com/):
+
+```bash
+npm install emoji-regex
+```
+
+In [Node.js](https://nodejs.org/):
+
+```js
+const emojiRegex = require('emoji-regex');
+// Note: because the regular expression has the global flag set, this module
+// exports a function that returns the regex rather than exporting the regular
+// expression itself, to make it impossible to (accidentally) mutate the
+// original regular expression.
+
+const text = `
+\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
+\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
+\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
+\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
+`;
+
+const regex = emojiRegex();
+let match;
+while (match = regex.exec(text)) {
+ const emoji = match[0];
+ console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
+}
+```
+
+Console output:
+
+```
+Matched sequence ⌚ — code points: 1
+Matched sequence ⌚ — code points: 1
+Matched sequence ↔️ — code points: 2
+Matched sequence ↔️ — code points: 2
+Matched sequence 👩 — code points: 1
+Matched sequence 👩 — code points: 1
+Matched sequence 👩🏿 — code points: 2
+Matched sequence 👩🏿 — code points: 2
+```
+
+To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
+
+```js
+const emojiRegex = require('emoji-regex/text.js');
+```
+
+Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
+
+```js
+const emojiRegex = require('emoji-regex/es2015/index.js');
+const emojiRegexText = require('emoji-regex/es2015/text.js');
+```
+
+## Author
+
+| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
+|---|
+| [Mathias Bynens](https://mathiasbynens.be/) |
+
+## License
+
+_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js
new file mode 100644
index 0000000000..0216db9587
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+ // https://mths.be/emoji
+ return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js
new file mode 100644
index 0000000000..d0a771d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = () => {
+ // https://mths.be/emoji
+ return /\u{1F3F4}(?:\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0077}\u{E006C}\u{E0073}|\u{E0073}\u{E0063}\u{E0074})\u{E007F}|\u200D\u2620\uFE0F)|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F468}(?:\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}])|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u{1F468}(?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F469}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|\u{1F468}(?:\u200D(?:[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u{1F466}\u{1F467}])|[\u{1F3FB}-\u{1F3FF}])|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F469}\u200D\u{1F467}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9B0}-\u{1F9B3}]|\u{1F469}\u200D\u{1F466}|\u{1F1F6}\u{1F1E6}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|[#\*0-9]\uFE0F\u20E3|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9D1}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6F9}\u{1F910}-\u{1F93A}\u{1F93C}-\u{1F93E}\u{1F940}-\u{1F945}\u{1F947}-\u{1F970}\u{1F973}-\u{1F976}\u{1F97A}\u{1F97C}-\u{1F9A2}\u{1F9B0}-\u{1F9B9}\u{1F9C0}-\u{1F9C2}\u{1F9D0}-\u{1F9FF}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F469}\u{1F46E}\u{1F470}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9D1}-\u{1F9DD}]/gu;
+};
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/index.js b/tools/node_modules/eslint/node_modules/emoji-regex/index.js
new file mode 100644
index 0000000000..e2237a4e80
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/index.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
+};
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/package.json b/tools/node_modules/eslint/node_modules/emoji-regex/package.json
new file mode 100644
index 0000000000..439b65e435
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/package.json
@@ -0,0 +1,55 @@
+{
+ "author": {
+ "name": "Mathias Bynens",
+ "url": "https://mathiasbynens.be/"
+ },
+ "bugs": {
+ "url": "https://github.com/mathiasbynens/emoji-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
+ "devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "mocha": "^5.2.0",
+ "regexgen": "^1.3.0",
+ "unicode-11.0.0": "^0.7.7",
+ "unicode-tr51": "^9.0.1"
+ },
+ "files": [
+ "LICENSE-MIT.txt",
+ "index.js",
+ "index.d.ts",
+ "text.js",
+ "es2015/index.js",
+ "es2015/text.js"
+ ],
+ "homepage": "https://mths.be/emoji-regex",
+ "keywords": [
+ "unicode",
+ "regex",
+ "regexp",
+ "regular expressions",
+ "code points",
+ "symbols",
+ "characters",
+ "emoji"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "emoji-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/mathiasbynens/emoji-regex.git"
+ },
+ "scripts": {
+ "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js",
+ "test": "mocha",
+ "test:watch": "npm run test -- --watch"
+ },
+ "types": "index.d.ts",
+ "version": "7.0.3"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/text.js b/tools/node_modules/eslint/node_modules/emoji-regex/text.js
new file mode 100644
index 0000000000..199ae3be35
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/text.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function () {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4(?:\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74)\uDB40\uDC7F|\u200D\u2620\uFE0F)|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC68(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3]))|\uD83D\uDC69\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\uD83D\uDC68(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83D\uDC69\u200D[\u2695\u2696\u2708])\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC68(?:\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDB0-\uDDB3])|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDD1-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDEEB\uDEEC\uDEF4-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEF9]|\uD83E[\uDD10-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC69\uDC6E\uDC70-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD18-\uDD1C\uDD1E\uDD1F\uDD26\uDD30-\uDD39\uDD3D\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDD1-\uDDDD])/g;
+};
diff --git a/tools/node_modules/eslint/node_modules/espree/package.json b/tools/node_modules/eslint/node_modules/espree/package.json
index 273d2c5bda..902e80a99a 100644
--- a/tools/node_modules/eslint/node_modules/espree/package.json
+++ b/tools/node_modules/eslint/node_modules/espree/package.json
@@ -8,7 +8,7 @@
},
"bundleDependencies": false,
"dependencies": {
- "acorn": "^6.0.2",
+ "acorn": "^6.0.7",
"acorn-jsx": "^5.0.0",
"eslint-visitor-keys": "^1.0.0"
},
@@ -66,5 +66,5 @@
"publish-release": "eslint-publish-release",
"test": "npm run-script lint && node Makefile.js test"
},
- "version": "5.0.0"
+ "version": "5.0.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/file-entry-cache/README.md b/tools/node_modules/eslint/node_modules/file-entry-cache/README.md
index 19d25f0445..854a512336 100644
--- a/tools/node_modules/eslint/node_modules/file-entry-cache/README.md
+++ b/tools/node_modules/eslint/node_modules/file-entry-cache/README.md
@@ -13,6 +13,17 @@ npm i --save file-entry-cache
## Usage
+The module exposes two functions `create` and `createFromFile`.
+
+## `create(cacheName, [directory, useCheckSum])`
+- **cacheName**: the name of the cache to be created
+- **directory**: Optional the directory to load the cache from
+- **usecheckSum**: Whether to use md5 checksum to verify if file changed. If false the default will be to use the mtime and size of the file.
+
+## `createFromFile(pathToCache, [useCheckSum])`
+- **pathToCache**: the path to the cache file (this combines the cache name and directory)
+- **useCheckSum**: Whether to use md5 checksum to verify if file changed. If false the default will be to use the mtime and size of the file.
+
```js
// loads the cache, if one does not exists for the given
// Id a new one will be prepared to be created
@@ -93,12 +104,6 @@ In the worst case scenario all the files will be processed. In the best case sce
## Important notes
- The values set on the meta attribute of the entries should be `stringify-able` ones if possible, flat-cache uses `circular-json` to try to persist circular structures, but this should be considered experimental. The best results are always obtained with non circular values
- All the changes to the cache state are done to memory first and only persisted after reconcile.
-- By default non visited entries are removed from the cache. This is done to prevent the file from growing too much. If this is not an issue and
- you prefer to do a manual pruning of the cache files, you can pass `true` to the `reconcile` call. Like this:
-
- ```javascript
- cache.reconcile( true /* noPrune */ );
- ```
## License
diff --git a/tools/node_modules/eslint/node_modules/file-entry-cache/cache.js b/tools/node_modules/eslint/node_modules/file-entry-cache/cache.js
index c37d679f63..ebc6386d1c 100644
--- a/tools/node_modules/eslint/node_modules/file-entry-cache/cache.js
+++ b/tools/node_modules/eslint/node_modules/file-entry-cache/cache.js
@@ -1,17 +1,17 @@
var path = require( 'path' );
+var crypto = require( 'crypto' );
module.exports = {
- createFromFile: function ( filePath ) {
+ createFromFile: function ( filePath, useChecksum ) {
var fname = path.basename( filePath );
var dir = path.dirname( filePath );
- return this.create( fname, dir );
+ return this.create( fname, dir, useChecksum );
},
- create: function ( cacheId, _path ) {
+ create: function ( cacheId, _path, useChecksum ) {
var fs = require( 'fs' );
var flatCache = require( 'flat-cache' );
var cache = flatCache.load( cacheId, _path );
- var assign = require( 'object-assign' );
var normalizedEntries = { };
var removeNotFoundFiles = function removeNotFoundFiles() {
@@ -36,6 +36,20 @@ module.exports = {
* @type {Object}
*/
cache: cache,
+
+ /**
+ * Given a buffer, calculate md5 hash of its content.
+ * @method getHash
+ * @param {Buffer} buffer buffer to calculate hash on
+ * @return {String} content hash digest
+ */
+ getHash: function ( buffer ) {
+ return crypto
+ .createHash( 'md5' )
+ .update( buffer )
+ .digest( 'hex' );
+ },
+
/**
* Return whether or not a file has changed since last time reconcile was called.
* @method hasFileChanged
@@ -80,26 +94,37 @@ module.exports = {
},
getFileDescriptor: function ( file ) {
- var meta = cache.getKey( file );
- var cacheExists = !!meta;
var fstat;
- var me = this;
try {
fstat = fs.statSync( file );
} catch (ex) {
- me.removeEntry( file );
+ this.removeEntry( file );
return { key: file, notFound: true, err: ex };
}
+ if ( useChecksum ) {
+ return this._getFileDescriptorUsingChecksum( file );
+ }
+
+ return this._getFileDescriptorUsingMtimeAndSize( file, fstat );
+ },
+
+ _getFileDescriptorUsingMtimeAndSize: function ( file, fstat ) {
+ var meta = cache.getKey( file );
+ var cacheExists = !!meta;
+
var cSize = fstat.size;
var cTime = fstat.mtime.getTime();
+ var isDifferentDate;
+ var isDifferentSize;
+
if ( !meta ) {
meta = { size: cSize, mtime: cTime };
} else {
- var isDifferentDate = cTime !== meta.mtime;
- var isDifferentSize = cSize !== meta.size;
+ isDifferentDate = cTime !== meta.mtime;
+ isDifferentSize = cSize !== meta.size;
}
var nEntry = normalizedEntries[ file ] = {
@@ -111,6 +136,35 @@ module.exports = {
return nEntry;
},
+ _getFileDescriptorUsingChecksum: function ( file ) {
+ var meta = cache.getKey( file );
+ var cacheExists = !!meta;
+
+ var contentBuffer;
+ try {
+ contentBuffer = fs.readFileSync( file );
+ } catch (ex) {
+ contentBuffer = '';
+ }
+
+ var isDifferent = true;
+ var hash = this.getHash( contentBuffer );
+
+ if ( !meta ) {
+ meta = { hash: hash };
+ } else {
+ isDifferent = hash !== meta.hash;
+ }
+
+ var nEntry = normalizedEntries[ file ] = {
+ key: file,
+ changed: !cacheExists || isDifferent,
+ meta: meta
+ };
+
+ return nEntry;
+ },
+
/**
* Return the list o the files that changed compared
* against the ones stored in the cache
@@ -175,13 +229,32 @@ module.exports = {
normalizedEntries = { };
cache.destroy();
},
+
+ _getMetaForFileUsingCheckSum: function ( cacheEntry ) {
+ var contentBuffer = fs.readFileSync( cacheEntry.key );
+ var hash = this.getHash( contentBuffer );
+ var meta = Object.assign( cacheEntry.meta, { hash: hash } );
+ return meta;
+ },
+
+ _getMetaForFileUsingMtimeAndSize: function ( cacheEntry ) {
+ var stat = fs.statSync( cacheEntry.key );
+ var meta = Object.assign( cacheEntry.meta, {
+ size: stat.size,
+ mtime: stat.mtime.getTime()
+ } );
+ return meta;
+ },
+
/**
* Sync the files and persist them to the cache
* @method reconcile
*/
- reconcile: function () {
+ reconcile: function ( noPrune ) {
removeNotFoundFiles();
+ noPrune = typeof noPrune === 'undefined' ? true : noPrune;
+
var entries = normalizedEntries;
var keys = Object.keys( entries );
@@ -189,16 +262,13 @@ module.exports = {
return;
}
+ var me = this;
+
keys.forEach( function ( entryName ) {
var cacheEntry = entries[ entryName ];
try {
- var stat = fs.statSync( cacheEntry.key );
- var meta = assign( cacheEntry.meta, {
- size: stat.size,
- mtime: stat.mtime.getTime()
- } );
-
+ var meta = useChecksum ? me._getMetaForFileUsingCheckSum( cacheEntry ) : me._getMetaForFileUsingMtimeAndSize( cacheEntry );
cache.setKey( entryName, meta );
} catch (err) {
// if the file does not exists we don't save it
@@ -209,7 +279,7 @@ module.exports = {
}
} );
- cache.save( true );
+ cache.save( noPrune );
}
};
}
diff --git a/tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md b/tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md
index 4cf9fdac65..52a86428d3 100644
--- a/tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md
+++ b/tools/node_modules/eslint/node_modules/file-entry-cache/changelog.md
@@ -1,5 +1,72 @@
# file-entry-cache - Changelog
+## v5.0.1
+- **Bug Fixes**
+ - Fix missing checksum comparison from reconcile since now we use mtime and size by default. - [e858aa9]( https://github.com/royriojas/file-entry-cache/commit/e858aa9 ), [Roy Riojas](https://github.com/Roy Riojas), 04/02/2019 12:30:22
+
+ Old mode using checkSum can still be used by passing the `useCheckSum` parameter to the `create` or `createFromFile` methods.
+
+## v5.0.0
+- **Refactoring**
+ - Make checksum comparison optional - [b0f9ae0]( https://github.com/royriojas/file-entry-cache/commit/b0f9ae0 ), [Roy Riojas](https://github.com/Roy Riojas), 03/02/2019 21:17:39
+
+ To determine if a file has changed we were using the checksum in the newer versions, but eslint was relying on the old behavior where we use the mtime and file size to determine if a file changed. That's why we decided to make the checksum check optional.
+
+ To use it:
+
+ ```js
+ // to make the cache use the checkSum check do the following:
+ var fCache = fileEntryCache.create(cacheName, dir, useCheckSum); // pass the third parameter as true
+ var otherCache = fileEntryCache.createFromFile(cacheName, useCheckSum); // pass the second parameter as true
+ ```
+
+## v4.0.0
+- **Build Scripts Changes**
+ - use the same node versions eslint use - [563cfee]( https://github.com/royriojas/file-entry-cache/commit/563cfee ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 23:29:34
+
+
+- **Other changes**
+ - Remove object-assign dependency. - [d0f598e]( https://github.com/royriojas/file-entry-cache/commit/d0f598e ), [Corey Farrell](https://github.com/Corey Farrell), 08/01/2019 23:09:51
+
+ node.js >=4 is required so object-assign is no longer needed, the native
+ Object.assign can be used instead.
+
+## v3.0.0
+- **Build Scripts Changes**
+ - Upgrade flat-cache dep to latest - [078b0df]( https://github.com/royriojas/file-entry-cache/commit/078b0df ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 21:54:40
+
+
+ - Commit new package-lock.json file - [245fe62]( https://github.com/royriojas/file-entry-cache/commit/245fe62 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 20:56:21
+
+
+- **Refactoring**
+ - add eslintrc file - [6dd32d8]( https://github.com/royriojas/file-entry-cache/commit/6dd32d8 ), [Roy Riojas](https://github.com/Roy Riojas), 22/08/2018 11:58:17
+
+
+- **Other changes**
+ - Move variable definition out of else block - [ea05441]( https://github.com/royriojas/file-entry-cache/commit/ea05441 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 25/04/2017 13:19:00
+
+
+ - Add script and cmd to test hash/checksum performance - [7f60e0a]( https://github.com/royriojas/file-entry-cache/commit/7f60e0a ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 16:43:12
+
+
+ - Calculate md5 hexdigest instead of Adler-32 checksum - [f9e5c69]( https://github.com/royriojas/file-entry-cache/commit/f9e5c69 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 16:43:12
+
+
+ - How to reproduce - [4edc2dc]( https://github.com/royriojas/file-entry-cache/commit/4edc2dc ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 24/04/2017 15:49:32
+
+
+ - Test handling of removed files - [09d9ec5]( https://github.com/royriojas/file-entry-cache/commit/09d9ec5 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 19/04/2017 21:51:50
+
+
+ - Use content checksum instead of mtime and fsize - [343b340]( https://github.com/royriojas/file-entry-cache/commit/343b340 ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 19/04/2017 21:51:47
+
+
+- **Revert**
+ - Revert "How to reproduce" - [4b4e54a]( https://github.com/royriojas/file-entry-cache/commit/4b4e54a ), [Zakhar Shapurau](https://github.com/Zakhar Shapurau), 25/04/2017 13:15:36
+
+ This reverts commit 4edc2dcec01574247bfc2e0a2fe26527332b7df3.
+
## v2.0.0
- **Features**
- do not persist and prune removed files from cache. Relates to [#2](https://github.com/royriojas/file-entry-cache/issues/2) - [408374d]( https://github.com/royriojas/file-entry-cache/commit/408374d ), [Roy Riojas](https://github.com/Roy Riojas), 16/08/2016 15:47:58
diff --git a/tools/node_modules/eslint/node_modules/file-entry-cache/package.json b/tools/node_modules/eslint/node_modules/file-entry-cache/package.json
index 87879f3540..9e8eee48a0 100644
--- a/tools/node_modules/eslint/node_modules/file-entry-cache/package.json
+++ b/tools/node_modules/eslint/node_modules/file-entry-cache/package.json
@@ -20,14 +20,13 @@
"projectName": "file-entry-cache"
},
"dependencies": {
- "flat-cache": "^1.2.1",
- "object-assign": "^4.0.1"
+ "flat-cache": "^2.0.1"
},
"deprecated": false,
"description": "Super simple cache for file metadata, useful for process that work o a given series of files and that only need to repeat the job on the changed ones since the previous run of the process",
"devDependencies": {
"chai": "^3.2.0",
- "changelogx": "^1.0.18",
+ "changelogx": "3.0.0",
"commander": "^2.6.0",
"del": "^2.0.2",
"esbeautifier": "^4.2.11",
@@ -44,7 +43,7 @@
"write": "^0.3.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
},
"files": [
"cache.js"
@@ -72,7 +71,7 @@
"url": "git+https://github.com/royriojas/file-entry-cache.git"
},
"scripts": {
- "beautify": "esbeautifier 'cache.js' 'test/**/*.js'",
+ "beautify": "esbeautifier 'cache.js' 'test/**/*.js' 'perf.js'",
"beautify-check": "npm run beautify -- -k",
"bump-major": "npm run pre-v && npm version major -m 'BLD: Release v%s' && npm run post-v",
"bump-minor": "npm run pre-v && npm version minor -m 'BLD: Release v%s' && npm run post-v",
@@ -80,14 +79,15 @@
"changelog": "changelogx -f markdown -o ./changelog.md",
"cover": "istanbul cover test/runner.js html text-summary",
"do-changelog": "npm run changelog && git add ./changelog.md && git commit -m 'DOC: Generate changelog' --no-verify",
- "eslint": "eslinter 'cache.js' 'specs/**/*.js'",
+ "eslint": "eslinter 'cache.js' 'specs/**/*.js' 'perf.js'",
"install-hooks": "prepush install && changelogx install-hook && precommit install",
"lint": "npm run beautify && npm run eslint",
+ "perf": "node perf.js",
"post-v": "npm run do-changelog && git push --no-verify && git push --tags --no-verify",
"pre-v": "npm run test",
"test": "npm run verify --silent && mocha -R spec test/specs",
"verify": "npm run beautify-check && npm run eslint",
"watch": "watch-run -i -p 'test/specs/**/*.js' istanbul cover test/runner.js html text-summary"
},
- "version": "2.0.0"
+ "version": "5.0.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/flat-cache/cache.js b/tools/node_modules/eslint/node_modules/flat-cache/cache.js
index 29219c86b1..6331ac7b91 100644
--- a/tools/node_modules/eslint/node_modules/flat-cache/cache.js
+++ b/tools/node_modules/eslint/node_modules/flat-cache/cache.js
@@ -1,5 +1,5 @@
var path = require( 'path' );
-var fs = require( 'graceful-fs' );
+var fs = require( 'fs' );
var utils = require( './utils' );
var del = require( './del' );
var writeJSON = utils.writeJSON;
diff --git a/tools/node_modules/eslint/node_modules/flat-cache/changelog.md b/tools/node_modules/eslint/node_modules/flat-cache/changelog.md
index 037a08ba17..0bdcfd41d3 100644
--- a/tools/node_modules/eslint/node_modules/flat-cache/changelog.md
+++ b/tools/node_modules/eslint/node_modules/flat-cache/changelog.md
@@ -1,17 +1,52 @@
# flat-cache - Changelog
+## v2.0.1
+- **Refactoring**
+ - upgrade node modules to latest versions - [6402ed3]( https://github.com/royriojas/flat-cache/commit/6402ed3 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 21:47:05
+
+
+## v2.0.0
+- **Bug Fixes**
+ - upgrade package.json lock file - [8d21c7b]( https://github.com/royriojas/flat-cache/commit/8d21c7b ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 20:03:13
+
+
+ - Use the same versions of node_js that eslint use - [8d23379]( https://github.com/royriojas/flat-cache/commit/8d23379 ), [Roy Riojas](https://github.com/Roy Riojas), 08/01/2019 19:25:11
+
+
+- **Other changes**
+ - Replace circular-json with flatted ([#36](https://github.com/royriojas/flat-cache/issues/36)) - [b93aced]( https://github.com/royriojas/flat-cache/commit/b93aced ), [C. K. Tang](https://github.com/C. K. Tang), 08/01/2019 20:03:01
+
+
+ - Change JSON parser from circular-json to flatted & 1 more changes ([#37](https://github.com/royriojas/flat-cache/issues/37)) - [745e65a]( https://github.com/royriojas/flat-cache/commit/745e65a ), [Andy Chen](https://github.com/Andy Chen), 08/01/2019 19:17:20
+
+ * Change JSON parser from circular-json to flatted & 1 more changes
+
+ * Change JSON parser from circular-json
+ * Audited 2 vulnerabilities
+
+ * Update package.json
+
+ * Update Engine require
+
+ * There's a bunch of dependencies in this pkg requires node >=4, so I changed it to 4
+
+ * Remove and add node versions
+
+ * I have seen this pkg is not available with node 0.12 so I removed it
+ * I have added a popular used LTS version of node - 10
+
## v1.3.4
- **Refactoring**
- - Add del.js and utils.js to the list of files to be beautified - [9d0ca9b]( https://github.com/royriojas/flat-cache/commit/9d0ca9b ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 12:19:02
+ - Add del.js and utils.js to the list of files to be beautified - [9d0ca9b]( https://github.com/royriojas/flat-cache/commit/9d0ca9b ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 15:19:02
## v1.3.3
- **Refactoring**
- - Make sure package-lock.json is up to date - [a7d2598]( https://github.com/royriojas/flat-cache/commit/a7d2598 ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 11:36:08
+ - Make sure package-lock.json is up to date - [a7d2598]( https://github.com/royriojas/flat-cache/commit/a7d2598 ), [Roy Riojas](https://github.com/Roy Riojas), 14/11/2018 14:36:08
- **Other changes**
- - Removed the need for del ([#33](https://github.com/royriojas/flat-cache/issues/33)) - [c429012]( https://github.com/royriojas/flat-cache/commit/c429012 ), [S. Gilroy](https://github.com/S. Gilroy), 13/11/2018 13:56:37
+ - Removed the need for del ([#33](https://github.com/royriojas/flat-cache/issues/33)) - [c429012]( https://github.com/royriojas/flat-cache/commit/c429012 ), [S. Gilroy](https://github.com/S. Gilroy), 13/11/2018 16:56:37
* Removed the need for del
@@ -27,30 +62,30 @@
## v1.3.2
- **Refactoring**
- - remove yarn.lock file - [704c6c4]( https://github.com/royriojas/flat-cache/commit/704c6c4 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 15:41:08
+ - remove yarn.lock file - [704c6c4]( https://github.com/royriojas/flat-cache/commit/704c6c4 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 18:41:08
- **undefined**
- - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23))" - [db12d74]( https://github.com/royriojas/flat-cache/commit/db12d74 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 15:40:39
+ - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23))" - [db12d74]( https://github.com/royriojas/flat-cache/commit/db12d74 ), [Roy Riojas](https://github.com/Roy Riojas), 07/11/2018 18:40:39
This reverts commit 00f689277a75e85fef28e6a048fad227afc525e6.
## v1.3.1
- **Refactoring**
- - upgrade deps to remove some security warnings - [f405719]( https://github.com/royriojas/flat-cache/commit/f405719 ), [Roy Riojas](https://github.com/Roy Riojas), 06/11/2018 12:07:31
+ - upgrade deps to remove some security warnings - [f405719]( https://github.com/royriojas/flat-cache/commit/f405719 ), [Roy Riojas](https://github.com/Roy Riojas), 06/11/2018 15:07:31
- **Bug Fixes**
- - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23)) - [00f6892]( https://github.com/royriojas/flat-cache/commit/00f6892 ), [Terry](https://github.com/Terry), 05/11/2018 18:44:16
+ - replace circular-json with flatted ([#23](https://github.com/royriojas/flat-cache/issues/23)) - [00f6892]( https://github.com/royriojas/flat-cache/commit/00f6892 ), [Terry](https://github.com/Terry), 05/11/2018 21:44:16
- **undefined**
- - update del to v3.0.0 ([#26](https://github.com/royriojas/flat-cache/issues/26)) - [d42883f]( https://github.com/royriojas/flat-cache/commit/d42883f ), [Patrick Silva](https://github.com/Patrick Silva), 03/11/2018 01:00:44
+ - update del to v3.0.0 ([#26](https://github.com/royriojas/flat-cache/issues/26)) - [d42883f]( https://github.com/royriojas/flat-cache/commit/d42883f ), [Patrick Silva](https://github.com/Patrick Silva), 03/11/2018 03:00:44
Closes <a target="_blank" class="info-link" href="https://github.com/royriojas/flat-cache/issues/25"><span>#25</span></a>
## v1.3.0
- **Other changes**
- - Added #all method ([#16](https://github.com/royriojas/flat-cache/issues/16)) - [12293be]( https://github.com/royriojas/flat-cache/commit/12293be ), [Ozair Patel](https://github.com/Ozair Patel), 25/09/2017 14:46:38
+ - Added #all method ([#16](https://github.com/royriojas/flat-cache/issues/16)) - [12293be]( https://github.com/royriojas/flat-cache/commit/12293be ), [Ozair Patel](https://github.com/Ozair Patel), 25/09/2017 16:46:38
* Added #all method
@@ -64,12 +99,12 @@
* Beautified file
- - fix changelog title style ([#14](https://github.com/royriojas/flat-cache/issues/14)) - [af8338a]( https://github.com/royriojas/flat-cache/commit/af8338a ), [前端小武](https://github.com/前端小武), 19/12/2016 20:34:48
+ - fix changelog title style ([#14](https://github.com/royriojas/flat-cache/issues/14)) - [af8338a]( https://github.com/royriojas/flat-cache/commit/af8338a ), [前端小武](https://github.com/前端小武), 19/12/2016 23:34:48
## v1.2.2
- **Bug Fixes**
- - Do not crash if cache file is invalid JSON. ([#13](https://github.com/royriojas/flat-cache/issues/13)) - [87beaa6]( https://github.com/royriojas/flat-cache/commit/87beaa6 ), [Roy Riojas](https://github.com/Roy Riojas), 19/12/2016 18:03:35
+ - Do not crash if cache file is invalid JSON. ([#13](https://github.com/royriojas/flat-cache/issues/13)) - [87beaa6]( https://github.com/royriojas/flat-cache/commit/87beaa6 ), [Roy Riojas](https://github.com/Roy Riojas), 19/12/2016 21:03:35
Fixes <a target="_blank" class="info-link" href="https://github.com/royriojas/flat-cache/issues/12"><span>#12</span></a>
@@ -80,186 +115,186 @@
If the cache is somehow not valid the cache will be discarded an a
a new cache will be stored instead
- **Other changes**
- - Added travis ci support for modern node versions ([#11](https://github.com/royriojas/flat-cache/issues/11)) - [1c2b1f7]( https://github.com/royriojas/flat-cache/commit/1c2b1f7 ), [Amila Welihinda](https://github.com/Amila Welihinda), 10/11/2016 23:47:52
+ - Added travis ci support for modern node versions ([#11](https://github.com/royriojas/flat-cache/issues/11)) - [1c2b1f7]( https://github.com/royriojas/flat-cache/commit/1c2b1f7 ), [Amila Welihinda](https://github.com/Amila Welihinda), 11/11/2016 02:47:52
- - Bumping `circular-son` version ([#10](https://github.com/royriojas/flat-cache/issues/10)) - [4d5e861]( https://github.com/royriojas/flat-cache/commit/4d5e861 ), [Andrea Giammarchi](https://github.com/Andrea Giammarchi), 02/08/2016 07:13:52
+ - Bumping `circular-son` version ([#10](https://github.com/royriojas/flat-cache/issues/10)) - [4d5e861]( https://github.com/royriojas/flat-cache/commit/4d5e861 ), [Andrea Giammarchi](https://github.com/Andrea Giammarchi), 02/08/2016 09:13:52
As mentioned in https://github.com/WebReflection/circular-json/issues/25 `circular-json` wan't rightly implementing the license field.
Latest version bump changed only that bit so that ESLint should now be happy.
## v1.2.1
- **Bug Fixes**
- - Add missing utils.js file to the package. closes [#8](https://github.com/royriojas/flat-cache/issues/8) - [ec10cf2]( https://github.com/royriojas/flat-cache/commit/ec10cf2 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 02:18:57
+ - Add missing utils.js file to the package. closes [#8](https://github.com/royriojas/flat-cache/issues/8) - [ec10cf2]( https://github.com/royriojas/flat-cache/commit/ec10cf2 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:18:57
## v1.2.0
- **Documentation**
- - Add documentation about noPrune option - [23e11f9]( https://github.com/royriojas/flat-cache/commit/23e11f9 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 02:06:49
+ - Add documentation about noPrune option - [23e11f9]( https://github.com/royriojas/flat-cache/commit/23e11f9 ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:06:49
## v1.1.0
- **Features**
- - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 02:00:29
+ - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:00:29
- - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:58:17
+ - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:58:17
- **Bug Fixes**
- - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 02:18:06
+ - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:18:06
Since we control both writing and reading of JSON stream, there no needs
to handle unicode BOM.
- - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 11:11:59
+ - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 13:11:59
- **Tests Related fixes**
- - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 02:15:51
+ - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:15:51
- - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:59:36
+ - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:36
- **Refactoring**
- - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:59:18
+ - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:18
- **Build Scripts Changes**
- - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 14:34:40
+ - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 17:34:40
- - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 15:04:08
+ - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 18:04:08
- - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 11:54:48
+ - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 14:54:48
- **Other changes**
- - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 21:02:18
+ - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 23:02:18
## v1.0.9
- **Bug Fixes**
- - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 15:59:30
+ - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:59:30
## v1.0.8
- **Build Scripts Changes**
- - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 15:51:39
+ - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:51:39
## v1.0.7
- **Other changes**
- - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:10:57
+ - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 17:10:57
- **Documentation**
- - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 14:48:05
+ - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 16:48:05
## v1.0.6
- **Build Scripts Changes**
- - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 14:44:31
+ - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 16:44:31
## v1.0.5
- **Documentation**
- - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 14:35:33
+ - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 16:35:33
- **Other changes**
- - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 13:47:41
+ - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:47:41
## v1.0.11
- **Features**
- - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 02:00:29
+ - Add noPrune option to cache.save() method. closes [#7](https://github.com/royriojas/flat-cache/issues/7) - [2c8016a]( https://github.com/royriojas/flat-cache/commit/2c8016a ), [Roy Riojas](https://github.com/Roy Riojas), 01/08/2016 04:00:29
- - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:58:17
+ - Add json read and write utility based on circular-json - [c31081e]( https://github.com/royriojas/flat-cache/commit/c31081e ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:58:17
- **Bug Fixes**
- - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 02:18:06
+ - Remove UTF16 BOM stripping - [4a41e22]( https://github.com/royriojas/flat-cache/commit/4a41e22 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:18:06
Since we control both writing and reading of JSON stream, there no needs
to handle unicode BOM.
- - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 11:11:59
+ - Use circular-json to handle circular references (fix [#5](https://github.com/royriojas/flat-cache/issues/5)) - [cd7aeed]( https://github.com/royriojas/flat-cache/commit/cd7aeed ), [Jean Ponchon](https://github.com/Jean Ponchon), 25/07/2016 13:11:59
- **Tests Related fixes**
- - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 02:15:51
+ - Add missing file from eslint test - [d6fa3c3]( https://github.com/royriojas/flat-cache/commit/d6fa3c3 ), [Jean Ponchon](https://github.com/Jean Ponchon), 29/07/2016 04:15:51
- - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:59:36
+ - Add test for circular json serialization / deserialization - [07d2ddd]( https://github.com/royriojas/flat-cache/commit/07d2ddd ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:36
- **Refactoring**
- - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 08:59:18
+ - Remove unused read-json-sync - [2be1c24]( https://github.com/royriojas/flat-cache/commit/2be1c24 ), [Jean Ponchon](https://github.com/Jean Ponchon), 28/07/2016 10:59:18
- **Build Scripts Changes**
- - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 14:34:40
+ - travis tests on 0.12 and 4x - [3a613fd]( https://github.com/royriojas/flat-cache/commit/3a613fd ), [royriojas](https://github.com/royriojas), 15/11/2015 17:34:40
## v1.0.10
- **Build Scripts Changes**
- - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 15:04:08
+ - add eslint-fix task - [fd29e52]( https://github.com/royriojas/flat-cache/commit/fd29e52 ), [royriojas](https://github.com/royriojas), 01/11/2015 18:04:08
- - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 11:54:48
+ - make sure the test script also verify beautification and linting of files before running tests - [e94e176]( https://github.com/royriojas/flat-cache/commit/e94e176 ), [royriojas](https://github.com/royriojas), 01/11/2015 14:54:48
- - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 15:51:39
+ - test against node 4 - [c395b66]( https://github.com/royriojas/flat-cache/commit/c395b66 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:51:39
- - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 14:44:31
+ - Add helpers/code check scripts - [bdb82f3]( https://github.com/royriojas/flat-cache/commit/bdb82f3 ), [royriojas](https://github.com/royriojas), 11/09/2015 16:44:31
- **Other changes**
- - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 21:02:18
+ - add clearAll for cacheDir - [97383d9]( https://github.com/royriojas/flat-cache/commit/97383d9 ), [xieyaowu](https://github.com/xieyaowu), 31/10/2015 23:02:18
- - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:10:57
+ - Move dependencies into devDep - [7e47099]( https://github.com/royriojas/flat-cache/commit/7e47099 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 17:10:57
- - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 13:47:41
+ - Update dependencies - [be88aa3]( https://github.com/royriojas/flat-cache/commit/be88aa3 ), [Bogdan Chadkin](https://github.com/Bogdan Chadkin), 11/09/2015 15:47:41
- **Bug Fixes**
- - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 15:59:30
+ - wrong default values for changelogx user repo name - [7bb52d1]( https://github.com/royriojas/flat-cache/commit/7bb52d1 ), [royriojas](https://github.com/royriojas), 11/09/2015 17:59:30
- **Documentation**
- - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 14:48:05
+ - Add missing changelog link - [f51197a]( https://github.com/royriojas/flat-cache/commit/f51197a ), [royriojas](https://github.com/royriojas), 11/09/2015 16:48:05
- - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 14:35:33
+ - better description for the module - [436817f]( https://github.com/royriojas/flat-cache/commit/436817f ), [royriojas](https://github.com/royriojas), 11/09/2015 16:35:33
- - Add documentation about `clearAll` and `clearCacheById` - [13947c1]( https://github.com/royriojas/flat-cache/commit/13947c1 ), [Roy Riojas](https://github.com/Roy Riojas), 01/03/2015 23:44:05
+ - Add documentation about `clearAll` and `clearCacheById` - [13947c1]( https://github.com/royriojas/flat-cache/commit/13947c1 ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 02:44:05
- **Refactoring**
- - load a cache file using the full filepath - [b8f68c2]( https://github.com/royriojas/flat-cache/commit/b8f68c2 ), [Roy Riojas](https://github.com/Roy Riojas), 30/08/2015 04:19:14
+ - load a cache file using the full filepath - [b8f68c2]( https://github.com/royriojas/flat-cache/commit/b8f68c2 ), [Roy Riojas](https://github.com/Roy Riojas), 30/08/2015 06:19:14
- **Features**
- - Add methods to remove the cache documents created - [af40443]( https://github.com/royriojas/flat-cache/commit/af40443 ), [Roy Riojas](https://github.com/Roy Riojas), 01/03/2015 23:39:27
+ - Add methods to remove the cache documents created - [af40443]( https://github.com/royriojas/flat-cache/commit/af40443 ), [Roy Riojas](https://github.com/Roy Riojas), 02/03/2015 02:39:27
## v1.0.1
- **Other changes**
- - Update README.md - [c2b6805]( https://github.com/royriojas/flat-cache/commit/c2b6805 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 04:28:07
+ - Update README.md - [c2b6805]( https://github.com/royriojas/flat-cache/commit/c2b6805 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 07:28:07
## v1.0.0
- **Refactoring**
- - flat-cache v.1.0.0 - [c984274]( https://github.com/royriojas/flat-cache/commit/c984274 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 04:11:50
+ - flat-cache v.1.0.0 - [c984274]( https://github.com/royriojas/flat-cache/commit/c984274 ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 07:11:50
- **Other changes**
- - Initial commit - [d43cccf]( https://github.com/royriojas/flat-cache/commit/d43cccf ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 01:12:16
+ - Initial commit - [d43cccf]( https://github.com/royriojas/flat-cache/commit/d43cccf ), [Roy Riojas](https://github.com/Roy Riojas), 26/02/2015 04:12:16
diff --git a/tools/node_modules/eslint/node_modules/flat-cache/del.js b/tools/node_modules/eslint/node_modules/flat-cache/del.js
index 542baac70a..c2c553713f 100644
--- a/tools/node_modules/eslint/node_modules/flat-cache/del.js
+++ b/tools/node_modules/eslint/node_modules/flat-cache/del.js
@@ -1,5 +1,5 @@
var rimraf = require( 'rimraf' ).sync;
-var fs = require( 'graceful-fs' );
+var fs = require( 'fs' );
module.exports = function del( file ) {
if ( fs.existsSync( file ) ) {
diff --git a/tools/node_modules/eslint/node_modules/flat-cache/package.json b/tools/node_modules/eslint/node_modules/flat-cache/package.json
index 66290b456a..de3dd5b131 100644
--- a/tools/node_modules/eslint/node_modules/flat-cache/package.json
+++ b/tools/node_modules/eslint/node_modules/flat-cache/package.json
@@ -20,10 +20,9 @@
"projectName": "flat-cache"
},
"dependencies": {
- "circular-json": "^0.3.1",
- "graceful-fs": "^4.1.2",
- "rimraf": "~2.6.2",
- "write": "^0.2.1"
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
},
"deprecated": false,
"description": "A stupidly simple key/value storage using files to persist some data",
@@ -43,7 +42,7 @@
"watch-run": "^1.2.2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
},
"files": [
"cache.js",
@@ -93,5 +92,5 @@
"verify": "npm run check && npm run test:cache",
"watch": "watch-run -i -p 'test/specs/**/*.js' istanbul cover test/runner.js html text-summary"
},
- "version": "1.3.4"
+ "version": "2.0.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/flat-cache/utils.js b/tools/node_modules/eslint/node_modules/flat-cache/utils.js
index 11b41f4370..1c44db9ab5 100644
--- a/tools/node_modules/eslint/node_modules/flat-cache/utils.js
+++ b/tools/node_modules/eslint/node_modules/flat-cache/utils.js
@@ -1,9 +1,8 @@
-var fs = require( 'graceful-fs' );
+var fs = require( 'fs' );
var write = require( 'write' );
-var circularJson = require( 'circular-json' );
+var flatted = require( 'flatted' );
module.exports = {
-
tryParse: function ( filePath, defaultValue ) {
var result;
try {
@@ -15,14 +14,16 @@ module.exports = {
},
/**
- * Read json file synchronously using circular-json
+ * Read json file synchronously using flatted
*
* @method readJSON
* @param {String} filePath Json filepath
* @returns {*} parse result
*/
readJSON: function ( filePath ) {
- return circularJson.parse( fs.readFileSync( filePath ).toString() );
+ return flatted.parse( fs.readFileSync( filePath, {
+ encoding: 'utf8'
+ } ) );
},
/**
@@ -33,7 +34,6 @@ module.exports = {
* @param {*} data Object to serialize
*/
writeJSON: function ( filePath, data ) {
- write.sync( filePath, circularJson.stringify( data ) );
+ write.sync( filePath, flatted.stringify( data ) );
}
-
};
diff --git a/tools/node_modules/eslint/node_modules/flatted/LICENSE b/tools/node_modules/eslint/node_modules/flatted/LICENSE
new file mode 100644
index 0000000000..c8508305bd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2018, Andrea Giammarchi, @WebReflection
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/flatted/README.md b/tools/node_modules/eslint/node_modules/flatted/README.md
new file mode 100644
index 0000000000..990144117e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/README.md
@@ -0,0 +1,52 @@
+# flatted
+
+![Downloads](https://img.shields.io/npm/dm/flatted.svg) [![Coverage Status](https://coveralls.io/repos/github/WebReflection/flatted/badge.svg?branch=master)](https://coveralls.io/github/WebReflection/flatted?branch=master) [![Build Status](https://travis-ci.org/WebReflection/flatted.svg?branch=master)](https://travis-ci.org/WebReflection/flatted) [![License: ISC](https://img.shields.io/badge/License-ISC-yellow.svg)](https://opensource.org/licenses/ISC) ![WebReflection status](https://offline.report/status/webreflection.svg)
+
+A super light (0.5K) and fast circular JSON parser, directly from the creator of [CircularJSON](https://github.com/WebReflection/circular-json/#circularjson).
+
+Usable via [CDN](https://unpkg.com/flatted) or as regular module.
+
+```js
+// ESM
+import {parse, stringify} from 'flatted/esm';
+
+// CJS
+const {parse, stringify} = require('flatted/cjs');
+
+const a = [{}];
+a[0].a = a;
+a.push(a);
+
+stringify(a); // [["1","0"],{"a":"0"}]
+```
+
+### New in V1: Exact same JSON API
+
+ * Added a [reviver](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Syntax) parameter to `.parse(string, reviver)` and revive your own objects.
+ * Added a [replacer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#Syntax) and a `space` parameter to `.stringify(object, replacer, space)` for feature parity with JSON signature.
+
+
+### Compatibility
+All ECMAScript engines compatible with `Map`, `Set`, `Object.keys`, and `Array.prototype.reduce` will work, even if polyfilled.
+
+
+### How does it work ?
+While stringifying, all Objects, including Arrays, and strings, are flattened out and replaced as unique index. `*`
+
+Once parsed, all indexes will be replaced through the flattened collection.
+
+<sup><sub>`*` represented as string to avoid conflicts with numbers</sub></sup>
+
+```js
+// logic example
+var a = [{one: 1}, {two: '2'}];
+a[0].a = a;
+// a is the main object, will be at index '0'
+// {one: 1} is the second object, index '1'
+// {two: '2'} the third, in '2', and it has a string
+// which will be found at index '3'
+
+Flatted.stringify(a);
+// [["1","2"],{"one":1,"a":"0"},{"two":"3"},"2"]
+// a[one,two] {one: 1, a} {two: '2'} '2'
+```
diff --git a/tools/node_modules/eslint/node_modules/flatted/cjs/index.js b/tools/node_modules/eslint/node_modules/flatted/cjs/index.js
new file mode 100644
index 0000000000..f312b06fb6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/cjs/index.js
@@ -0,0 +1,116 @@
+var Flatted = (function (Primitive, primitive) {
+
+ /*!
+ * ISC License
+ *
+ * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+ var Flatted = {
+
+ parse: function parse(text, reviver) {
+ var input = JSON.parse(text, Primitives).map(primitives);
+ var value = input[0];
+ var $ = reviver || noop;
+ var tmp = typeof value === 'object' && value ?
+ revive(input, new Set, value, $) :
+ value;
+ return $.call({'': tmp}, '', tmp);
+ },
+
+ stringify: function stringify(value, replacer, space) {
+ for (var
+ firstRun,
+ known = new Map,
+ input = [],
+ output = [],
+ $ = replacer && typeof replacer === typeof input ?
+ function (k, v) {
+ if (k === '' || -1 < replacer.indexOf(k)) return v;
+ } :
+ (replacer || noop),
+ i = +set(known, input, $.call({'': value}, '', value)),
+ replace = function (key, value) {
+ if (firstRun) {
+ firstRun = !firstRun;
+ return value;
+ // this was invoking twice each root object
+ // return i < 1 ? value : $.call(this, key, value);
+ }
+ var after = $.call(this, key, value);
+ switch (typeof after) {
+ case 'object':
+ if (after === null) return after;
+ case primitive:
+ return known.get(after) || set(known, input, after);
+ }
+ return after;
+ };
+ i < input.length; i++
+ ) {
+ firstRun = true;
+ output[i] = JSON.stringify(input[i], replace, space);
+ }
+ return '[' + output.join(',') + ']';
+ }
+
+ };
+
+ return Flatted;
+
+ function noop(key, value) {
+ return value;
+ }
+
+ function revive(input, parsed, output, $) {
+ return Object.keys(output).reduce(
+ function (output, key) {
+ var value = output[key];
+ if (value instanceof Primitive) {
+ var tmp = input[value];
+ if (typeof tmp === 'object' && !parsed.has(tmp)) {
+ parsed.add(tmp);
+ output[key] = $.call(output, key, revive(input, parsed, tmp, $));
+ } else {
+ output[key] = $.call(output, key, tmp);
+ }
+ } else
+ output[key] = $.call(output, key, value);
+ return output;
+ },
+ output
+ );
+ }
+
+ function set(known, input, value) {
+ var index = Primitive(input.push(value) - 1);
+ known.set(value, index);
+ return index;
+ }
+
+ // the two kinds of primitives
+ // 1. the real one
+ // 2. the wrapped one
+
+ function primitives(value) {
+ return value instanceof Primitive ? Primitive(value) : value;
+ }
+
+ function Primitives(key, value) {
+ return typeof value === primitive ? new Primitive(value) : value;
+ }
+
+}(String, 'string'));
+module.exports = Flatted;
diff --git a/tools/node_modules/eslint/node_modules/flatted/esm/index.js b/tools/node_modules/eslint/node_modules/flatted/esm/index.js
new file mode 100644
index 0000000000..b17bd564d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/esm/index.js
@@ -0,0 +1,118 @@
+var Flatted = (function (Primitive, primitive) {
+
+ /*!
+ * ISC License
+ *
+ * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+ var Flatted = {
+
+ parse: function parse(text, reviver) {
+ var input = JSON.parse(text, Primitives).map(primitives);
+ var value = input[0];
+ var $ = reviver || noop;
+ var tmp = typeof value === 'object' && value ?
+ revive(input, new Set, value, $) :
+ value;
+ return $.call({'': tmp}, '', tmp);
+ },
+
+ stringify: function stringify(value, replacer, space) {
+ for (var
+ firstRun,
+ known = new Map,
+ input = [],
+ output = [],
+ $ = replacer && typeof replacer === typeof input ?
+ function (k, v) {
+ if (k === '' || -1 < replacer.indexOf(k)) return v;
+ } :
+ (replacer || noop),
+ i = +set(known, input, $.call({'': value}, '', value)),
+ replace = function (key, value) {
+ if (firstRun) {
+ firstRun = !firstRun;
+ return value;
+ // this was invoking twice each root object
+ // return i < 1 ? value : $.call(this, key, value);
+ }
+ var after = $.call(this, key, value);
+ switch (typeof after) {
+ case 'object':
+ if (after === null) return after;
+ case primitive:
+ return known.get(after) || set(known, input, after);
+ }
+ return after;
+ };
+ i < input.length; i++
+ ) {
+ firstRun = true;
+ output[i] = JSON.stringify(input[i], replace, space);
+ }
+ return '[' + output.join(',') + ']';
+ }
+
+ };
+
+ return Flatted;
+
+ function noop(key, value) {
+ return value;
+ }
+
+ function revive(input, parsed, output, $) {
+ return Object.keys(output).reduce(
+ function (output, key) {
+ var value = output[key];
+ if (value instanceof Primitive) {
+ var tmp = input[value];
+ if (typeof tmp === 'object' && !parsed.has(tmp)) {
+ parsed.add(tmp);
+ output[key] = $.call(output, key, revive(input, parsed, tmp, $));
+ } else {
+ output[key] = $.call(output, key, tmp);
+ }
+ } else
+ output[key] = $.call(output, key, value);
+ return output;
+ },
+ output
+ );
+ }
+
+ function set(known, input, value) {
+ var index = Primitive(input.push(value) - 1);
+ known.set(value, index);
+ return index;
+ }
+
+ // the two kinds of primitives
+ // 1. the real one
+ // 2. the wrapped one
+
+ function primitives(value) {
+ return value instanceof Primitive ? Primitive(value) : value;
+ }
+
+ function Primitives(key, value) {
+ return typeof value === primitive ? new Primitive(value) : value;
+ }
+
+}(String, 'string'));
+export default Flatted;
+export const parse = Flatted.parse;
+export const stringify = Flatted.stringify;
diff --git a/tools/node_modules/eslint/node_modules/flatted/index.js b/tools/node_modules/eslint/node_modules/flatted/index.js
new file mode 100644
index 0000000000..1df9db3084
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/index.js
@@ -0,0 +1,115 @@
+var Flatted = (function (Primitive, primitive) {
+
+ /*!
+ * ISC License
+ *
+ * Copyright (c) 2018, Andrea Giammarchi, @WebReflection
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+ var Flatted = {
+
+ parse: function parse(text, reviver) {
+ var input = JSON.parse(text, Primitives).map(primitives);
+ var value = input[0];
+ var $ = reviver || noop;
+ var tmp = typeof value === 'object' && value ?
+ revive(input, new Set, value, $) :
+ value;
+ return $.call({'': tmp}, '', tmp);
+ },
+
+ stringify: function stringify(value, replacer, space) {
+ for (var
+ firstRun,
+ known = new Map,
+ input = [],
+ output = [],
+ $ = replacer && typeof replacer === typeof input ?
+ function (k, v) {
+ if (k === '' || -1 < replacer.indexOf(k)) return v;
+ } :
+ (replacer || noop),
+ i = +set(known, input, $.call({'': value}, '', value)),
+ replace = function (key, value) {
+ if (firstRun) {
+ firstRun = !firstRun;
+ return value;
+ // this was invoking twice each root object
+ // return i < 1 ? value : $.call(this, key, value);
+ }
+ var after = $.call(this, key, value);
+ switch (typeof after) {
+ case 'object':
+ if (after === null) return after;
+ case primitive:
+ return known.get(after) || set(known, input, after);
+ }
+ return after;
+ };
+ i < input.length; i++
+ ) {
+ firstRun = true;
+ output[i] = JSON.stringify(input[i], replace, space);
+ }
+ return '[' + output.join(',') + ']';
+ }
+
+ };
+
+ return Flatted;
+
+ function noop(key, value) {
+ return value;
+ }
+
+ function revive(input, parsed, output, $) {
+ return Object.keys(output).reduce(
+ function (output, key) {
+ var value = output[key];
+ if (value instanceof Primitive) {
+ var tmp = input[value];
+ if (typeof tmp === 'object' && !parsed.has(tmp)) {
+ parsed.add(tmp);
+ output[key] = $.call(output, key, revive(input, parsed, tmp, $));
+ } else {
+ output[key] = $.call(output, key, tmp);
+ }
+ } else
+ output[key] = $.call(output, key, value);
+ return output;
+ },
+ output
+ );
+ }
+
+ function set(known, input, value) {
+ var index = Primitive(input.push(value) - 1);
+ known.set(value, index);
+ return index;
+ }
+
+ // the two kinds of primitives
+ // 1. the real one
+ // 2. the wrapped one
+
+ function primitives(value) {
+ return value instanceof Primitive ? Primitive(value) : value;
+ }
+
+ function Primitives(key, value) {
+ return typeof value === primitive ? new Primitive(value) : value;
+ }
+
+}(String, 'string'));
diff --git a/tools/node_modules/eslint/node_modules/flatted/min.js b/tools/node_modules/eslint/node_modules/flatted/min.js
new file mode 100644
index 0000000000..6d23e02e15
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/min.js
@@ -0,0 +1,2 @@
+/*! (c) 2018, Andrea Giammarchi, (ISC) */
+var Flatted=function(a,l){return{parse:function(n,t){var e=JSON.parse(n,i).map(f),r=e[0],u=t||s,c="object"==typeof r&&r?function u(c,f,n,i){return Object.keys(n).reduce(function(n,t){var e=n[t];if(e instanceof a){var r=c[e];"object"!=typeof r||f.has(r)?n[t]=i.call(n,t,r):(f.add(r),n[t]=i.call(n,t,u(c,f,r,i)))}else n[t]=i.call(n,t,e);return n},n)}(e,new Set,r,u):r;return u.call({"":c},"",c)},stringify:function(n,e,t){for(var r,u=new Map,c=[],f=[],i=e&&typeof e==typeof c?function(n,t){if(""===n||-1<e.indexOf(n))return t}:e||s,a=+p(u,c,i.call({"":n},"",n)),o=function(n,t){if(r)return r=!r,t;var e=i.call(this,n,t);switch(typeof e){case"object":if(null===e)return e;case l:return u.get(e)||p(u,c,e)}return e};a<c.length;a++)r=!0,f[a]=JSON.stringify(c[a],o,t);return"["+f.join(",")+"]"}};function s(n,t){return t}function p(n,t,e){var r=a(t.push(e)-1);return n.set(e,r),r}function f(n){return n instanceof a?a(n):n}function i(n,t){return typeof t===l?new a(t):t}}(String,"string");
diff --git a/tools/node_modules/eslint/node_modules/flatted/package.json b/tools/node_modules/eslint/node_modules/flatted/package.json
new file mode 100644
index 0000000000..2f93f37af7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/flatted/package.json
@@ -0,0 +1,48 @@
+{
+ "author": {
+ "name": "Andrea Giammarchi"
+ },
+ "bugs": {
+ "url": "https://github.com/WebReflection/flatted/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A super light and fast circular JSON parser.",
+ "devDependencies": {
+ "circular-json": "latest",
+ "circular-json-es6": "latest",
+ "coveralls": "latest",
+ "istanbul": "latest",
+ "jsan": "latest",
+ "uglify-js": "latest"
+ },
+ "homepage": "https://github.com/WebReflection/flatted#readme",
+ "keywords": [
+ "circular",
+ "JSON",
+ "fast",
+ "parser",
+ "minimal"
+ ],
+ "license": "ISC",
+ "main": "cjs/index.js",
+ "module": "esm/index.js",
+ "name": "flatted",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/WebReflection/flatted.git"
+ },
+ "scripts": {
+ "bench": "node test/bench.js",
+ "build": "npm run cjs && npm test && npm run esm && npm run min && npm run size",
+ "cjs": "cp index.js cjs/index.js; echo 'module.exports = Flatted;' >> cjs/index.js",
+ "coveralls": "cat ./coverage/lcov.info | coveralls",
+ "esm": "cp index.js esm/index.js; echo 'export default Flatted;' >> esm/index.js; echo 'export const parse = Flatted.parse;' >> esm/index.js; echo 'export const stringify = Flatted.stringify;' >> esm/index.js",
+ "min": "echo '/*! (c) 2018, Andrea Giammarchi, (ISC) */'>min.js && uglifyjs index.js --support-ie8 -c -m >> min.js",
+ "size": "cat index.js | wc -c;cat min.js | wc -c;gzip -c9 min.js | wc -c;cat min.js | brotli | wc -c",
+ "test": "istanbul cover test/index.js"
+ },
+ "types": "types.d.ts",
+ "unpkg": "min.js",
+ "version": "2.0.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/globals/globals.json b/tools/node_modules/eslint/node_modules/globals/globals.json
index b1f7a2972f..65a4c7ec78 100644
--- a/tools/node_modules/eslint/node_modules/globals/globals.json
+++ b/tools/node_modules/eslint/node_modules/globals/globals.json
@@ -1510,6 +1510,9 @@
"opr": false
},
"greasemonkey": {
+ "cloneInto": false,
+ "createObjectIn": false,
+ "exportFunction": false,
"GM": false,
"GM_addStyle": false,
"GM_deleteValue": false,
diff --git a/tools/node_modules/eslint/node_modules/globals/package.json b/tools/node_modules/eslint/node_modules/globals/package.json
index b590fd2490..aa91e2f18e 100644
--- a/tools/node_modules/eslint/node_modules/globals/package.json
+++ b/tools/node_modules/eslint/node_modules/globals/package.json
@@ -41,7 +41,7 @@
"scripts": {
"test": "xo && ava"
},
- "version": "11.10.0",
+ "version": "11.11.0",
"xo": {
"ignores": [
"get-browser-globals.js"
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/LICENSE b/tools/node_modules/eslint/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 9d2c803696..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/README.md b/tools/node_modules/eslint/node_modules/graceful-fs/README.md
deleted file mode 100644
index 5273a50ad6..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](https://nodejs.org/api/fs.html)
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
-
-## Global Patching
-
-If you want to patch the global fs module (or any other fs-like
-module) you can do this:
-
-```javascript
-// Make sure to read the caveat below.
-var realFs = require('fs')
-var gracefulFs = require('graceful-fs')
-gracefulFs.gracefulify(realFs)
-```
-
-This should only ever be done at the top-level application layer, in
-order to delay on EMFILE errors from any fs-using dependencies. You
-should **not** do this in a library, because it can cause unexpected
-delays in other parts of the program.
-
-## Changes
-
-This module is fairly stable at this point, and used by a lot of
-things. That being said, because it implements a subtle behavior
-change in a core part of the node API, even modest changes can be
-extremely breaking, and the versioning is thus biased towards
-bumping the major when in doubt.
-
-The main change between major versions has been switching between
-providing a fully-patched `fs` module vs monkey-patching the node core
-builtin, and the approach by which a non-monkey-patched `fs` was
-created.
-
-The goal is to trade `EMFILE` errors for slower fs operations. So, if
-you try to open a zillion files, rather than crashing, `open`
-operations will be queued up and wait for something else to `close`.
-
-There are advantages to each approach. Monkey-patching the fs means
-that no `EMFILE` errors can possibly occur anywhere in your
-application, because everything is using the same core `fs` module,
-which is patched. However, it can also obviously cause undesirable
-side-effects, especially if the module is loaded multiple times.
-
-Implementing a separate-but-identical patched `fs` module is more
-surgical (and doesn't run the risk of patching multiple times), but
-also imposes the challenge of keeping in sync with the core module.
-
-The current approach loads the `fs` module, and then creates a
-lookalike object that has all the same methods, except a few that are
-patched. It is safe to use in all versions of Node from 0.8 through
-7.0.
-
-### v4
-
-* Do not monkey-patch the fs module. This module may now be used as a
- drop-in dep, and users can opt into monkey-patching the fs builtin
- if their app requires it.
-
-### v3
-
-* Monkey-patch fs, because the eval approach no longer works on recent
- node.
-* fixed possible type-error throw if rename fails on windows
-* verify that we *never* get EMFILE errors
-* Ignore ENOSYS from chmod/chown
-* clarify that graceful-fs must be used as a drop-in
-
-### v2.1.0
-
-* Use eval rather than monkey-patching fs.
-* readdir: Always sort the results
-* win32: requeue a file if error has an OK status
-
-### v2.0
-
-* A return to monkey patching
-* wrap process.cwd
-
-### v1.1
-
-* wrap readFile
-* Wrap fs.writeFile.
-* readdir protection
-* Don't clobber the fs builtin
-* Handle fs.read EAGAIN errors by trying again
-* Expose the curOpen counter
-* No-op lchown/lchmod if not implemented
-* fs.rename patch only for win32
-* Patch fs.rename to handle AV software on Windows
-* Close #4 Chown should not fail on einval or eperm if non-root
-* Fix isaacs/fstream#1 Only wrap fs one time
-* Fix #3 Start at 1024 max files, then back off on EMFILE
-* lutimes that doens't blow up on Linux
-* A full on-rewrite using a queue instead of just swallowing the EMFILE error
-* Wrap Read/Write streams as well
-
-### 1.0
-
-* Update engines for node 0.6
-* Be lstat-graceful on Windows
-* first
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/clone.js b/tools/node_modules/eslint/node_modules/graceful-fs/clone.js
deleted file mode 100644
index 028356c96e..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/clone.js
+++ /dev/null
@@ -1,19 +0,0 @@
-'use strict'
-
-module.exports = clone
-
-function clone (obj) {
- if (obj === null || typeof obj !== 'object')
- return obj
-
- if (obj instanceof Object)
- var copy = { __proto__: obj.__proto__ }
- else
- var copy = Object.create(null)
-
- Object.getOwnPropertyNames(obj).forEach(function (key) {
- Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))
- })
-
- return copy
-}
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js b/tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index ac206757e6..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,279 +0,0 @@
-var fs = require('fs')
-var polyfills = require('./polyfills.js')
-var legacy = require('./legacy-streams.js')
-var clone = require('./clone.js')
-
-var queue = []
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs4')
-else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ')
- console.error(m)
- }
-
-if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug(queue)
- require('assert').equal(queue.length, 0)
- })
-}
-
-module.exports = patch(clone(fs))
-if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
- module.exports = patch(fs)
- fs.__patched = true;
-}
-
-// Always patch fs.close/closeSync, because we want to
-// retry() whenever a close happens *anywhere* in the program.
-// This is essential when multiple graceful-fs instances are
-// in play at the same time.
-module.exports.close = (function (fs$close) { return function (fd, cb) {
- return fs$close.call(fs, fd, function (err) {
- if (!err)
- retry()
-
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- })
-}})(fs.close)
-
-module.exports.closeSync = (function (fs$closeSync) { return function (fd) {
- // Note that graceful-fs also retries when fs.closeSync() fails.
- // Looks like a bug to me, although it's probably a harmless one.
- var rval = fs$closeSync.apply(fs, arguments)
- retry()
- return rval
-}})(fs.closeSync)
-
-// Only patch fs once, otherwise we'll run into a memory leak if
-// graceful-fs is loaded multiple times, such as in test environments that
-// reset the loaded modules between tests.
-// We look for the string `graceful-fs` from the comment above. This
-// way we are not adding any extra properties and it will detect if older
-// versions of graceful-fs are installed.
-if (!/\bgraceful-fs\b/.test(fs.closeSync.toString())) {
- fs.closeSync = module.exports.closeSync;
- fs.close = module.exports.close;
-}
-
-function patch (fs) {
- // Everything that references the open() function needs to be in here
- polyfills(fs)
- fs.gracefulify = patch
- fs.FileReadStream = ReadStream; // Legacy name.
- fs.FileWriteStream = WriteStream; // Legacy name.
- fs.createReadStream = createReadStream
- fs.createWriteStream = createWriteStream
- var fs$readFile = fs.readFile
- fs.readFile = readFile
- function readFile (path, options, cb) {
- if (typeof options === 'function')
- cb = options, options = null
-
- return go$readFile(path, options, cb)
-
- function go$readFile (path, options, cb) {
- return fs$readFile(path, options, function (err) {
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$readFile, [path, options, cb]])
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- })
- }
- }
-
- var fs$writeFile = fs.writeFile
- fs.writeFile = writeFile
- function writeFile (path, data, options, cb) {
- if (typeof options === 'function')
- cb = options, options = null
-
- return go$writeFile(path, data, options, cb)
-
- function go$writeFile (path, data, options, cb) {
- return fs$writeFile(path, data, options, function (err) {
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$writeFile, [path, data, options, cb]])
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- })
- }
- }
-
- var fs$appendFile = fs.appendFile
- if (fs$appendFile)
- fs.appendFile = appendFile
- function appendFile (path, data, options, cb) {
- if (typeof options === 'function')
- cb = options, options = null
-
- return go$appendFile(path, data, options, cb)
-
- function go$appendFile (path, data, options, cb) {
- return fs$appendFile(path, data, options, function (err) {
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$appendFile, [path, data, options, cb]])
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- })
- }
- }
-
- var fs$readdir = fs.readdir
- fs.readdir = readdir
- function readdir (path, options, cb) {
- var args = [path]
- if (typeof options !== 'function') {
- args.push(options)
- } else {
- cb = options
- }
- args.push(go$readdir$cb)
-
- return go$readdir(args)
-
- function go$readdir$cb (err, files) {
- if (files && files.sort)
- files.sort()
-
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$readdir, [args]])
-
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- }
- }
-
- function go$readdir (args) {
- return fs$readdir.apply(fs, args)
- }
-
- if (process.version.substr(0, 4) === 'v0.8') {
- var legStreams = legacy(fs)
- ReadStream = legStreams.ReadStream
- WriteStream = legStreams.WriteStream
- }
-
- var fs$ReadStream = fs.ReadStream
- if (fs$ReadStream) {
- ReadStream.prototype = Object.create(fs$ReadStream.prototype)
- ReadStream.prototype.open = ReadStream$open
- }
-
- var fs$WriteStream = fs.WriteStream
- if (fs$WriteStream) {
- WriteStream.prototype = Object.create(fs$WriteStream.prototype)
- WriteStream.prototype.open = WriteStream$open
- }
-
- fs.ReadStream = ReadStream
- fs.WriteStream = WriteStream
-
- function ReadStream (path, options) {
- if (this instanceof ReadStream)
- return fs$ReadStream.apply(this, arguments), this
- else
- return ReadStream.apply(Object.create(ReadStream.prototype), arguments)
- }
-
- function ReadStream$open () {
- var that = this
- open(that.path, that.flags, that.mode, function (err, fd) {
- if (err) {
- if (that.autoClose)
- that.destroy()
-
- that.emit('error', err)
- } else {
- that.fd = fd
- that.emit('open', fd)
- that.read()
- }
- })
- }
-
- function WriteStream (path, options) {
- if (this instanceof WriteStream)
- return fs$WriteStream.apply(this, arguments), this
- else
- return WriteStream.apply(Object.create(WriteStream.prototype), arguments)
- }
-
- function WriteStream$open () {
- var that = this
- open(that.path, that.flags, that.mode, function (err, fd) {
- if (err) {
- that.destroy()
- that.emit('error', err)
- } else {
- that.fd = fd
- that.emit('open', fd)
- }
- })
- }
-
- function createReadStream (path, options) {
- return new ReadStream(path, options)
- }
-
- function createWriteStream (path, options) {
- return new WriteStream(path, options)
- }
-
- var fs$open = fs.open
- fs.open = open
- function open (path, flags, mode, cb) {
- if (typeof mode === 'function')
- cb = mode, mode = null
-
- return go$open(path, flags, mode, cb)
-
- function go$open (path, flags, mode, cb) {
- return fs$open(path, flags, mode, function (err, fd) {
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$open, [path, flags, mode, cb]])
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
- })
- }
- }
-
- return fs
-}
-
-function enqueue (elem) {
- debug('ENQUEUE', elem[0].name, elem[1])
- queue.push(elem)
-}
-
-function retry () {
- var elem = queue.shift()
- if (elem) {
- debug('RETRY', elem[0].name, elem[1])
- elem[0].apply(null, elem[1])
- }
-}
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js b/tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js
deleted file mode 100644
index d617b50fc0..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/legacy-streams.js
+++ /dev/null
@@ -1,118 +0,0 @@
-var Stream = require('stream').Stream
-
-module.exports = legacy
-
-function legacy (fs) {
- return {
- ReadStream: ReadStream,
- WriteStream: WriteStream
- }
-
- function ReadStream (path, options) {
- if (!(this instanceof ReadStream)) return new ReadStream(path, options);
-
- Stream.call(this);
-
- var self = this;
-
- this.path = path;
- this.fd = null;
- this.readable = true;
- this.paused = false;
-
- this.flags = 'r';
- this.mode = 438; /*=0666*/
- this.bufferSize = 64 * 1024;
-
- options = options || {};
-
- // Mixin options into this
- var keys = Object.keys(options);
- for (var index = 0, length = keys.length; index < length; index++) {
- var key = keys[index];
- this[key] = options[key];
- }
-
- if (this.encoding) this.setEncoding(this.encoding);
-
- if (this.start !== undefined) {
- if ('number' !== typeof this.start) {
- throw TypeError('start must be a Number');
- }
- if (this.end === undefined) {
- this.end = Infinity;
- } else if ('number' !== typeof this.end) {
- throw TypeError('end must be a Number');
- }
-
- if (this.start > this.end) {
- throw new Error('start must be <= end');
- }
-
- this.pos = this.start;
- }
-
- if (this.fd !== null) {
- process.nextTick(function() {
- self._read();
- });
- return;
- }
-
- fs.open(this.path, this.flags, this.mode, function (err, fd) {
- if (err) {
- self.emit('error', err);
- self.readable = false;
- return;
- }
-
- self.fd = fd;
- self.emit('open', fd);
- self._read();
- })
- }
-
- function WriteStream (path, options) {
- if (!(this instanceof WriteStream)) return new WriteStream(path, options);
-
- Stream.call(this);
-
- this.path = path;
- this.fd = null;
- this.writable = true;
-
- this.flags = 'w';
- this.encoding = 'binary';
- this.mode = 438; /*=0666*/
- this.bytesWritten = 0;
-
- options = options || {};
-
- // Mixin options into this
- var keys = Object.keys(options);
- for (var index = 0, length = keys.length; index < length; index++) {
- var key = keys[index];
- this[key] = options[key];
- }
-
- if (this.start !== undefined) {
- if ('number' !== typeof this.start) {
- throw TypeError('start must be a Number');
- }
- if (this.start < 0) {
- throw new Error('start must be >= zero');
- }
-
- this.pos = this.start;
- }
-
- this.busy = false;
- this._queue = [];
-
- if (this.fd === null) {
- this._open = fs.open;
- this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);
- this.flush();
- }
- }
-}
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/package.json b/tools/node_modules/eslint/node_modules/graceful-fs/package.json
deleted file mode 100644
index b585bfe22f..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "A drop-in replacement for fs, making various improvements.",
- "devDependencies": {
- "import-fresh": "^2.0.0",
- "mkdirp": "^0.5.0",
- "rimraf": "^2.2.8",
- "tap": "^12.0.1"
- },
- "directories": {
- "test": "test"
- },
- "files": [
- "fs.js",
- "graceful-fs.js",
- "legacy-streams.js",
- "polyfills.js",
- "clone.js"
- ],
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "fs",
- "module",
- "reading",
- "retry",
- "retries",
- "queue",
- "error",
- "errors",
- "handling",
- "EMFILE",
- "EAGAIN",
- "EINVAL",
- "EPERM",
- "EACCESS"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "name": "graceful-fs",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "postpublish": "git push origin --all; git push origin --tags",
- "postversion": "npm publish",
- "preversion": "npm test",
- "test": "node test.js | tap -"
- },
- "version": "4.1.15"
-} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js b/tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index b964ed0806..0000000000
--- a/tools/node_modules/eslint/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,329 +0,0 @@
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-
-var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform
-
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-try {
- process.cwd()
-} catch (er) {}
-
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-module.exports = patch
-
-function patch (fs) {
- // (re-)implement some things that are known busted or missing.
-
- // lchmod, broken prior to 0.6.2
- // back-port the fix here.
- if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- patchLchmod(fs)
- }
-
- // lutimes implementation, or no-op
- if (!fs.lutimes) {
- patchLutimes(fs)
- }
-
- // https://github.com/isaacs/node-graceful-fs/issues/4
- // Chown should not fail on einval or eperm if non-root.
- // It should not fail on enosys ever, as this just indicates
- // that a fs doesn't support the intended operation.
-
- fs.chown = chownFix(fs.chown)
- fs.fchown = chownFix(fs.fchown)
- fs.lchown = chownFix(fs.lchown)
-
- fs.chmod = chmodFix(fs.chmod)
- fs.fchmod = chmodFix(fs.fchmod)
- fs.lchmod = chmodFix(fs.lchmod)
-
- fs.chownSync = chownFixSync(fs.chownSync)
- fs.fchownSync = chownFixSync(fs.fchownSync)
- fs.lchownSync = chownFixSync(fs.lchownSync)
-
- fs.chmodSync = chmodFixSync(fs.chmodSync)
- fs.fchmodSync = chmodFixSync(fs.fchmodSync)
- fs.lchmodSync = chmodFixSync(fs.lchmodSync)
-
- fs.stat = statFix(fs.stat)
- fs.fstat = statFix(fs.fstat)
- fs.lstat = statFix(fs.lstat)
-
- fs.statSync = statFixSync(fs.statSync)
- fs.fstatSync = statFixSync(fs.fstatSync)
- fs.lstatSync = statFixSync(fs.lstatSync)
-
- // if lchmod/lchown do not exist, then make them no-ops
- if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- if (cb) process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
- }
- if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- if (cb) process.nextTick(cb)
- }
- fs.lchownSync = function () {}
- }
-
- // on Windows, A/V software can lock the directory, causing this
- // to fail with an EACCES or EPERM if the directory contains newly
- // created files. Try again on failure, for up to 60 seconds.
-
- // Set the timeout this long because some Windows Anti-Virus, such as Parity
- // bit9, may lock files for up to a minute, causing npm package install
- // failures. Also, take care to yield the scheduler. Windows scheduling gives
- // CPU to a busy looping process, which can cause the program causing the lock
- // contention to be starved of CPU by node, so the contention doesn't resolve.
- if (platform === "win32") {
- fs.rename = (function (fs$rename) { return function (from, to, cb) {
- var start = Date.now()
- var backoff = 0;
- fs$rename(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 60000) {
- setTimeout(function() {
- fs.stat(to, function (stater, st) {
- if (stater && stater.code === "ENOENT")
- fs$rename(from, to, CB);
- else
- cb(er)
- })
- }, backoff)
- if (backoff < 100)
- backoff += 10;
- return;
- }
- if (cb) cb(er)
- })
- }})(fs.rename)
- }
-
- // if read() returns EAGAIN, then just try it again.
- fs.read = (function (fs$read) { return function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return fs$read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return fs$read.call(fs, fd, buffer, offset, length, position, callback)
- }})(fs.read)
-
- fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return fs$readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
- }})(fs.readSync)
-
- function patchLchmod (fs) {
- fs.lchmod = function (path, mode, callback) {
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- if (callback) callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- if (callback) callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var threw = true
- var ret
- try {
- ret = fs.fchmodSync(fd, mode)
- threw = false
- } finally {
- if (threw) {
- try {
- fs.closeSync(fd)
- } catch (er) {}
- } else {
- fs.closeSync(fd)
- }
- }
- return ret
- }
- }
-
- function patchLutimes (fs) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- if (er) {
- if (cb) cb(er)
- return
- }
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- if (cb) cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- var ret
- var threw = true
- try {
- ret = fs.futimesSync(fd, at, mt)
- threw = false
- } finally {
- if (threw) {
- try {
- fs.closeSync(fd)
- } catch (er) {}
- } else {
- fs.closeSync(fd)
- }
- }
- return ret
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
- }
-
- function chmodFix (orig) {
- if (!orig) return orig
- return function (target, mode, cb) {
- return orig.call(fs, target, mode, function (er) {
- if (chownErOk(er)) er = null
- if (cb) cb.apply(this, arguments)
- })
- }
- }
-
- function chmodFixSync (orig) {
- if (!orig) return orig
- return function (target, mode) {
- try {
- return orig.call(fs, target, mode)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
- }
-
-
- function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er) {
- if (chownErOk(er)) er = null
- if (cb) cb.apply(this, arguments)
- })
- }
- }
-
- function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
- }
-
-
- function statFix (orig) {
- if (!orig) return orig
- // Older versions of Node erroneously returned signed integers for
- // uid + gid.
- return function (target, cb) {
- return orig.call(fs, target, function (er, stats) {
- if (!stats) return cb.apply(this, arguments)
- if (stats.uid < 0) stats.uid += 0x100000000
- if (stats.gid < 0) stats.gid += 0x100000000
- if (cb) cb.apply(this, arguments)
- })
- }
- }
-
- function statFixSync (orig) {
- if (!orig) return orig
- // Older versions of Node erroneously returned signed integers for
- // uid + gid.
- return function (target) {
- var stats = orig.call(fs, target)
- if (stats.uid < 0) stats.uid += 0x100000000
- if (stats.gid < 0) stats.gid += 0x100000000
- return stats;
- }
- }
-
- // ENOSYS means that the fs doesn't support the op. Just ignore
- // that, because it doesn't matter.
- //
- // if there's no getuid, or if getuid() is something other
- // than 0, and the error is EINVAL or EPERM, then just ignore
- // it.
- //
- // This specific case is a silent failure in cp, install, tar,
- // and most other unix tools that manage permissions.
- //
- // When running as root, or if other types of errors are
- // encountered, then it's strict.
- function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
- }
-}
diff --git a/tools/node_modules/eslint/node_modules/rxjs/bundles/rxjs.umd.js b/tools/node_modules/eslint/node_modules/rxjs/bundles/rxjs.umd.js
index 9fffecbe37..85dd4bb124 100644
--- a/tools/node_modules/eslint/node_modules/rxjs/bundles/rxjs.umd.js
+++ b/tools/node_modules/eslint/node_modules/rxjs/bundles/rxjs.umd.js
@@ -416,38 +416,38 @@
(factory((global.rxjs = {})));
}(this, (function (exports) { 'use strict';
- /*! *****************************************************************************
- Copyright (c) Microsoft Corporation. All rights reserved.
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of the
- License at http://www.apache.org/licenses/LICENSE-2.0
-
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
- MERCHANTABLITY OR NON-INFRINGEMENT.
-
- See the Apache Version 2.0 License for specific language governing permissions
- and limitations under the License.
- ***************************************************************************** */
- /* global Reflect, Promise */
-
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
-
- function __extends(d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- }
-
- var __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
+ /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation. All rights reserved.
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0
+
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+ MERCHANTABLITY OR NON-INFRINGEMENT.
+
+ See the Apache Version 2.0 License for specific language governing permissions
+ and limitations under the License.
+ ***************************************************************************** */
+ /* global Reflect, Promise */
+
+ var extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+
+ function __extends(d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ }
+
+ var __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
};
function isFunction(x) {
diff --git a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js
index 82b406015b..a4df50167a 100644
--- a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js
+++ b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js
@@ -17,7 +17,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
*/
const calculateCellWidthIndex = cells => {
return cells.map(value => {
- return (0, _stringWidth.default)(value);
+ return Math.max(...value.split('\n').map(line => {
+ return (0, _stringWidth.default)(line);
+ }));
});
};
diff --git a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.flow b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.flow
index f6b90dd8c0..6e4f7a5971 100644
--- a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.flow
+++ b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.flow
@@ -8,6 +8,10 @@ import stringWidth from 'string-width';
*/
export default (cells) => {
return cells.map((value) => {
- return stringWidth(value);
+ return Math.max(
+ ...value.split('\n').map((line) => {
+ return stringWidth(line);
+ })
+ );
});
};
diff --git a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.map b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.map
index 99d1f7798d..c880cd2ff2 100644
--- a/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.map
+++ b/tools/node_modules/eslint/node_modules/table/dist/calculateCellWidthIndex.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/calculateCellWidthIndex.js"],"names":["cells","map","value"],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;gCAMgBA,K,IAAU;AACxB,SAAOA,KAAK,CAACC,GAAN,CAAWC,KAAD,IAAW;AAC1B,WAAO,0BAAYA,KAAZ,CAAP;AACD,GAFM,CAAP;AAGD,C","sourcesContent":["import stringWidth from 'string-width';\n\n/**\n * Calculates width of each cell contents.\n *\n * @param {string[]} cells\n * @returns {number[]}\n */\nexport default (cells) => {\n return cells.map((value) => {\n return stringWidth(value);\n });\n};\n"],"file":"calculateCellWidthIndex.js"} \ No newline at end of file
+{"version":3,"sources":["../src/calculateCellWidthIndex.js"],"names":["cells","map","value","Math","max","split","line"],"mappings":";;;;;;;AAAA;;;;AAEA;;;;;;gCAMgBA,K,IAAU;AACxB,SAAOA,KAAK,CAACC,GAAN,CAAWC,KAAD,IAAW;AAC1B,WAAOC,IAAI,CAACC,GAAL,CACL,GAAGF,KAAK,CAACG,KAAN,CAAY,IAAZ,EAAkBJ,GAAlB,CAAuBK,IAAD,IAAU;AACjC,aAAO,0BAAYA,IAAZ,CAAP;AACD,KAFE,CADE,CAAP;AAKD,GANM,CAAP;AAOD,C","sourcesContent":["import stringWidth from 'string-width';\n\n/**\n * Calculates width of each cell contents.\n *\n * @param {string[]} cells\n * @returns {number[]}\n */\nexport default (cells) => {\n return cells.map((value) => {\n return Math.max(\n ...value.split('\\n').map((line) => {\n return stringWidth(line);\n })\n );\n });\n};\n"],"file":"calculateCellWidthIndex.js"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/index.js
new file mode 100644
index 0000000000..76d354a9af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/index.js
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = options => {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+
+ const pattern = [
+ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\\u0007)',
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
+ ].join('|');
+
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/license b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/package.json
new file mode 100644
index 0000000000..bcc09292f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/package.json
@@ -0,0 +1,62 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-regex#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern"
+ ],
+ "license": "MIT",
+ "name": "ansi-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-regex.git"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "view-supported": "node fixtures/view-codes.js"
+ },
+ "version": "4.0.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/readme.md
new file mode 100644
index 0000000000..1b9d5fa98a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/ansi-regex/readme.md
@@ -0,0 +1,65 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+
+## Install
+
+```
+$ npm install ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001B[4mcake\u001B[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex());
+//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+```
+
+
+## API
+
+### ansiRegex([options])
+
+Returns a regex for matching ANSI escape codes.
+
+#### options
+
+##### onlyFirst
+
+Type: `boolean`<br>
+Default: `false` *(Matches any ANSI escape codes in a string)*
+
+Match only the first ANSI escape.
+
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/string-width/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/index.js
new file mode 100644
index 0000000000..33c9d6c06f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const emojiRegex = require('emoji-regex')();
+
+module.exports = input => {
+ input = input.replace(emojiRegex, ' ');
+
+ if (typeof input !== 'string' || input.length === 0) {
+ return 0;
+ }
+
+ input = stripAnsi(input);
+
+ let width = 0;
+
+ for (let i = 0; i < input.length; i++) {
+ const code = input.codePointAt(i);
+
+ // Ignore control characters
+ if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
+ continue;
+ }
+
+ // Ignore combining characters
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ }
+
+ // Surrogates
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint(code) ? 2 : 1;
+ }
+
+ return width;
+};
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/string-width/license b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/string-width/package.json b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/package.json
new file mode 100644
index 0000000000..4133710c3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/package.json
@@ -0,0 +1,65 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "deprecated": false,
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "^1.0.1",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "name": "string-width",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/string-width/readme.md b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/readme.md
new file mode 100644
index 0000000000..df5b7199f9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/string-width/readme.md
@@ -0,0 +1,42 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/index.js
new file mode 100644
index 0000000000..96e0292c8e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/index.js
@@ -0,0 +1,4 @@
+'use strict';
+const ansiRegex = require('ansi-regex');
+
+module.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input;
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/license b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/package.json b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/package.json
new file mode 100644
index 0000000000..8b96e6d04b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/package.json
@@ -0,0 +1,61 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/strip-ansi/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "ansi-regex": "^4.0.0"
+ },
+ "deprecated": false,
+ "description": "Strip ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/strip-ansi#readme",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "strip-ansi",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/strip-ansi.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "5.0.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/readme.md b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/readme.md
new file mode 100644
index 0000000000..d4871fb443
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/strip-ansi/readme.md
@@ -0,0 +1,53 @@
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
+
+> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=readme">Get professional support for 'strip-ansi' with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
+
+---
+
+## Install
+
+```
+$ npm install strip-ansi
+```
+
+
+## Usage
+
+```js
+const stripAnsi = require('strip-ansi');
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+```
+
+
+## Related
+
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/table/package.json b/tools/node_modules/eslint/node_modules/table/package.json
index 9efa6086a8..0068c152dc 100644
--- a/tools/node_modules/eslint/node_modules/table/package.json
+++ b/tools/node_modules/eslint/node_modules/table/package.json
@@ -9,37 +9,37 @@
},
"bundleDependencies": false,
"dependencies": {
- "ajv": "^6.6.1",
+ "ajv": "^6.9.1",
"lodash": "^4.17.11",
- "slice-ansi": "^2.0.0",
- "string-width": "^2.1.1"
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
},
"deprecated": false,
"description": "Formats data into a string table.",
"devDependencies": {
- "@babel/cli": "^7.1.5",
- "@babel/core": "^7.1.6",
- "@babel/node": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.1.6",
- "@babel/preset-env": "^7.1.6",
+ "@babel/cli": "^7.2.3",
+ "@babel/core": "^7.2.2",
+ "@babel/node": "^7.2.2",
+ "@babel/plugin-transform-flow-strip-types": "^7.2.3",
+ "@babel/preset-env": "^7.3.1",
"@babel/register": "^7.0.0",
"ajv-cli": "^3.0.0",
- "ajv-keywords": "^3.2.0",
+ "ajv-keywords": "^3.4.0",
"babel-plugin-istanbul": "^5.1.0",
"babel-plugin-transform-export-default-name": "^2.0.4",
"chai": "^4.2.0",
- "chalk": "^2.4.1",
+ "chalk": "^2.4.2",
"coveralls": "^3.0.2",
- "eslint": "^5.9.0",
- "eslint-config-canonical": "^13.0.0",
- "flow-bin": "^0.87.0",
+ "eslint": "^5.13.0",
+ "eslint-config-canonical": "^16.1.0",
+ "flow-bin": "^0.92.1",
"flow-copy-source": "^2.0.2",
- "gitdown": "^2.5.5",
- "husky": "^1.2.0",
+ "gitdown": "^2.5.7",
+ "husky": "^1.3.1",
"mocha": "^5.2.0",
- "nyc": "^13.1.0",
- "semantic-release": "^15.12.3",
- "sinon": "^7.1.1"
+ "nyc": "^13.2.0",
+ "semantic-release": "^15.13.3",
+ "sinon": "^7.2.3"
},
"engines": {
"node": ">=6.0.0"
@@ -85,5 +85,5 @@
"lint": "npm run build && eslint ./src ./test && flow",
"test": "mocha --require @babel/register"
},
- "version": "5.2.2"
+ "version": "5.2.3"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/write/LICENSE b/tools/node_modules/eslint/node_modules/write/LICENSE
index fa30c4cb3e..943e71d055 100644
--- a/tools/node_modules/eslint/node_modules/write/LICENSE
+++ b/tools/node_modules/eslint/node_modules/write/LICENSE
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2014-2015, Jon Schlinkert.
+Copyright (c) 2014-2017, Jon Schlinkert.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+THE SOFTWARE. \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/write/README.md b/tools/node_modules/eslint/node_modules/write/README.md
index f5b9bc85ba..31c95974bb 100644
--- a/tools/node_modules/eslint/node_modules/write/README.md
+++ b/tools/node_modules/eslint/node_modules/write/README.md
@@ -1,101 +1,178 @@
-# write [![NPM version](https://badge.fury.io/js/write.svg)](http://badge.fury.io/js/write) [![Build Status](https://travis-ci.org/jonschlinkert/write.svg)](https://travis-ci.org/jonschlinkert/write)
+# write [![NPM version](https://img.shields.io/npm/v/write.svg?style=flat)](https://www.npmjs.com/package/write) [![NPM monthly downloads](https://img.shields.io/npm/dm/write.svg?style=flat)](https://npmjs.org/package/write) [![NPM total downloads](https://img.shields.io/npm/dt/write.svg?style=flat)](https://npmjs.org/package/write) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/write.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/write)
-> Write files to disk, creating intermediate directories if they don't exist.
+> Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.
-Install with [npm](https://www.npmjs.com/)
+## Install
+
+Install with [npm](https://www.npmjs.com/):
```sh
-$ npm i write --save
+$ npm install --save write
+```
+
+## Usage
+
+```js
+var writeFile = require('write');
```
-## API docs
+## API
-### [writeFile](index.js#L32)
+### [writeFile](index.js#L40)
-Asynchronously write a file to disk. Creates any intermediate directories if they don't already exist.
+Asynchronously writes data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a promise if a callback function is not passed.
**Params**
-* `dest` **{String}**: Destination file path
-* `str` **{String}**: String to write to disk.
-* `callback` **{Function}**
+* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
+* `data` **{string|Buffer|Uint8Array}**: String to write to disk.
+* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
+* `callback` **{Function}**: (optional) If no callback is provided, a promise is returned.
**Example**
```js
var writeFile = require('write');
-writeFile('foo.txt', 'This is content to write.', function(err) {
+writeFile('foo.txt', 'This is content...', function(err) {
if (err) console.log(err);
});
+
+// promise
+writeFile('foo.txt', 'This is content...')
+ .then(function() {
+ // do stuff
+ });
```
-### [.writeFile.sync](index.js#L64)
+### [.promise](index.js#L82)
-Synchronously write files to disk. Creates any intermediate directories if they don't already exist.
+The promise version of [writeFile](#writefile). Returns a promise.
**Params**
-* `dest` **{String}**: Destination file path
-* `str` **{String}**: String to write to disk.
+* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
+* `val` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
+* `options` **{object}**: Options to pass to [fs.writeFile](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback) and/or [mkdirp](https://github.com/substack/node-mkdirp)
+* `returns` **{Promise}**
**Example**
```js
var writeFile = require('write');
-writeFile.sync('foo.txt', 'This is content to write.');
+writeFile.promise('foo.txt', 'This is content...')
+ .then(function() {
+ // do stuff
+ });
```
-### [.writeFile.stream](index.js#L87)
+### [.sync](index.js#L120)
-Uses `fs.createWriteStream`, but also creates any intermediate directories if they don't already exist.
+The synchronous version of [writeFile](#writefile). Returns undefined.
**Params**
-* `dest` **{String}**: Destination file path
-* `returns` **{Stream}**: Returns a write stream.
+* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
+* `data` **{string|Buffer|Uint8Array}**: String or buffer to write to disk.
+* `options` **{object}**: Options to pass to [fs.writeFileSync](https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options) and/or [mkdirp](https://github.com/substack/node-mkdirp)
+* `returns` **{undefined}**
**Example**
```js
-var write = require('write');
-write.stream('foo.txt');
+var writeFile = require('write');
+writeFile.sync('foo.txt', 'This is content...');
+```
+
+### [.stream](index.js#L151)
+
+Uses `fs.createWriteStream` to write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Data can be a string or a buffer. Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object.
+
+**Params**
+
+* `filepath` **{string|Buffer|integer}**: filepath or file descriptor.
+* `options` **{object}**: Options to pass to [mkdirp](https://github.com/substack/node-mkdirp) and [fs.createWriteStream](https://nodejs.org/api/fs.html#fs_fs_createwritestream_path_options)
+* `returns` **{Stream}**: Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
+
+**Example**
+
+```js
+var fs = require('fs');
+var writeFile = require('write');
+fs.createReadStream('README.md')
+ .pipe(writeFile.stream('a/b/c/other-file.md'))
+ .on('close', function() {
+ // do stuff
+ });
```
-## Related
+## Release history
-* [delete](https://github.com/jonschlinkert/delete): Delete files and folders and any intermediate directories if they exist (sync and async).
-* [read-yaml](https://github.com/jonschlinkert/read-yaml): Very thin wrapper around js-yaml for directly reading in YAML files.
-* [read-json](https://github.com/azer/read-json): Reads and parses a JSON file.
-* [read-data](https://github.com/jonschlinkert/read-data): Read JSON or YAML files.
-* [write-yaml](https://github.com/jonschlinkert/write-yaml): Write YAML. Converts JSON to YAML writes it to the specified file.
-* [write-json](https://github.com/jonschlinkert/write-json): Write a JSON to file disk, also creates directories in the dest path if they… [more](https://github.com/jonschlinkert/write-json)
+### v1.0.2 - 2017-07-11
-## Running tests
+* improved documentation
-Install dev dependencies:
+### v1.0.0 - 2017-07-09
+
+**Added**
+
+* [promise support](#promise)
+
+**Changed**
+
+* The main export will now return a promise if no callback is passed
+
+## About
+
+### Related projects
+
+* [delete](https://www.npmjs.com/package/delete): Delete files and folders and any intermediate directories if they exist (sync and async). | [homepage](https://github.com/jonschlinkert/delete "Delete files and folders and any intermediate directories if they exist (sync and async).")
+* [read-data](https://www.npmjs.com/package/read-data): Read JSON or YAML files. | [homepage](https://github.com/jonschlinkert/read-data "Read JSON or YAML files.")
+* [read-yaml](https://www.npmjs.com/package/read-yaml): Very thin wrapper around js-yaml for directly reading in YAML files. | [homepage](https://github.com/jonschlinkert/read-yaml "Very thin wrapper around js-yaml for directly reading in YAML files.")
+* [write-data](https://www.npmjs.com/package/write-data): Write a YAML or JSON file to disk. Automatically detects the format to write based… [more](https://github.com/jonschlinkert/write-data) | [homepage](https://github.com/jonschlinkert/write-data "Write a YAML or JSON file to disk. Automatically detects the format to write based on extension. Or pass `ext` on the options.")
+* [write-json](https://www.npmjs.com/package/write-json): Write a JSON file to disk, also creates intermediate directories in the destination path if… [more](https://github.com/jonschlinkert/write-json) | [homepage](https://github.com/jonschlinkert/write-json "Write a JSON file to disk, also creates intermediate directories in the destination path if they don't already exist.")
+* [write-yaml](https://www.npmjs.com/package/write-yaml): Write YAML. Converts JSON to YAML writes it to the specified file. | [homepage](https://github.com/jonschlinkert/write-yaml "Write YAML. Converts JSON to YAML writes it to the specified file.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** |
+| --- | --- |
+| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 1 | [tunnckoCore](https://github.com/tunnckoCore) |
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
```sh
-$ npm i -d && npm test
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
```
-## Contributing
+### Running tests
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/write/issues/new)
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
-## Author
+```sh
+$ npm install && npm test
+```
+
+### Author
**Jon Schlinkert**
-+ [github/jonschlinkert](https://github.com/jonschlinkert)
-+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
-## License
+### License
-Copyright © 2015 Jon Schlinkert
-Released under the MIT license.
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
***
-_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 29, 2015._
-
-<!-- deps:mocha --> \ No newline at end of file
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on July 11, 2017._ \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/write/index.js b/tools/node_modules/eslint/node_modules/write/index.js
index f952638d0d..b2b4b4380a 100644
--- a/tools/node_modules/eslint/node_modules/write/index.js
+++ b/tools/node_modules/eslint/node_modules/write/index.js
@@ -1,93 +1,160 @@
/*!
* write <https://github.com/jonschlinkert/write>
*
- * Copyright (c) 2014-2015, Jon Schlinkert.
- * Licensed under the MIT License.
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
*/
'use strict';
var fs = require('fs');
var path = require('path');
-var mkdir = require('mkdirp');
+var mkdirp = require('mkdirp');
/**
- * Asynchronously write a file to disk. Creates any intermediate
- * directories if they don't already exist.
+ * Asynchronously writes data to a file, replacing the file if it already
+ * exists and creating any intermediate directories if they don't already
+ * exist. Data can be a string or a buffer. Returns a promise if a callback
+ * function is not passed.
*
* ```js
* var writeFile = require('write');
- * writeFile('foo.txt', 'This is content to write.', function(err) {
+ * writeFile('foo.txt', 'This is content...', function(err) {
* if (err) console.log(err);
* });
+ *
+ * // promise
+ * writeFile('foo.txt', 'This is content...')
+ * .then(function() {
+ * // do stuff
+ * });
* ```
+ * @name writeFile
+ * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
+ * @param {string|Buffer|Uint8Array} `data` String to write to disk.
+ * @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
+ * @param {Function} `callback` (optional) If no callback is provided, a promise is returned.
+ * @api public
+ */
+
+function writeFile(filepath, data, options, cb) {
+ if (typeof options === 'function') {
+ cb = options;
+ options = {};
+ }
+
+ if (typeof cb !== 'function') {
+ return writeFile.promise.apply(null, arguments);
+ }
+
+ if (typeof filepath !== 'string') {
+ cb(new TypeError('expected filepath to be a string'));
+ return;
+ }
+
+ mkdirp(path.dirname(filepath), options, function(err) {
+ if (err) {
+ cb(err);
+ return;
+ }
+ fs.writeFile(filepath, data, options, cb);
+ });
+};
+
+/**
+ * The promise version of [writeFile](#writefile). Returns a promise.
*
- * @name writeFile
- * @param {String} `dest` Destination file path
- * @param {String} `str` String to write to disk.
- * @param {Function} `callback`
+ * ```js
+ * var writeFile = require('write');
+ * writeFile.promise('foo.txt', 'This is content...')
+ * .then(function() {
+ * // do stuff
+ * });
+ * ```
+ * @name .promise
+ * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
+ * @param {string|Buffer|Uint8Array} `val` String or buffer to write to disk.
+ * @param {object} `options` Options to pass to [fs.writeFile][fs]{#fs_fs_writefile_file_data_options_callback} and/or [mkdirp][]
+ * @return {Promise}
* @api public
*/
-module.exports = function writeFile(dest, str, cb) {
- var dir = path.dirname(dest);
- fs.exists(dir, function (exists) {
- if (exists) {
- fs.writeFile(dest, str, cb);
- } else {
- mkdir(dir, function (err) {
+writeFile.promise = function(filepath, val, options) {
+ if (typeof filepath !== 'string') {
+ return Promise.reject(new TypeError('expected filepath to be a string'));
+ }
+
+ return new Promise(function(resolve, reject) {
+ mkdirp(path.dirname(filepath), options, function(err) {
+ if (err) {
+ reject(err);
+ return;
+ }
+
+ fs.writeFile(filepath, val, options, function(err) {
if (err) {
- return cb(err);
- } else {
- fs.writeFile(dest, str, cb);
+ reject(err);
+ return;
}
+ resolve(val);
});
- }
+ });
});
};
/**
- * Synchronously write files to disk. Creates any intermediate
- * directories if they don't already exist.
+ * The synchronous version of [writeFile](#writefile). Returns undefined.
*
* ```js
* var writeFile = require('write');
- * writeFile.sync('foo.txt', 'This is content to write.');
+ * writeFile.sync('foo.txt', 'This is content...');
* ```
- *
- * @name writeFile.sync
- * @param {String} `dest` Destination file path
- * @param {String} `str` String to write to disk.
+ * @name .sync
+ * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
+ * @param {string|Buffer|Uint8Array} `data` String or buffer to write to disk.
+ * @param {object} `options` Options to pass to [fs.writeFileSync][fs]{#fs_fs_writefilesync_file_data_options} and/or [mkdirp][]
+ * @return {undefined}
* @api public
*/
-module.exports.sync = function writeFileSync(dest, str) {
- var dir = path.dirname(dest);
- if (!fs.existsSync(dir)) {
- mkdir.sync(dir);
+writeFile.sync = function(filepath, data, options) {
+ if (typeof filepath !== 'string') {
+ throw new TypeError('expected filepath to be a string');
}
- fs.writeFileSync(dest, str);
+ mkdirp.sync(path.dirname(filepath), options);
+ fs.writeFileSync(filepath, data, options);
};
/**
- * Uses `fs.createWriteStream`, but also creates any intermediate
- * directories if they don't already exist.
+ * Uses `fs.createWriteStream` to write data to a file, replacing the
+ * file if it already exists and creating any intermediate directories
+ * if they don't already exist. Data can be a string or a buffer. Returns
+ * a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream)
+ * object.
*
* ```js
- * var write = require('write');
- * write.stream('foo.txt');
+ * var fs = require('fs');
+ * var writeFile = require('write');
+ * fs.createReadStream('README.md')
+ * .pipe(writeFile.stream('a/b/c/other-file.md'))
+ * .on('close', function() {
+ * // do stuff
+ * });
* ```
- *
- * @name writeFile.stream
- * @param {String} `dest` Destination file path
- * @return {Stream} Returns a write stream.
+ * @name .stream
+ * @param {string|Buffer|integer} `filepath` filepath or file descriptor.
+ * @param {object} `options` Options to pass to [mkdirp][] and [fs.createWriteStream][fs]{#fs_fs_createwritestream_path_options}
+ * @return {Stream} Returns a new [WriteStream](https://nodejs.org/api/fs.html#fs_class_fs_writestream) object. (See [Writable Stream](https://nodejs.org/api/stream.html#stream_class_stream_writable)).
* @api public
*/
-module.exports.stream = function writeFileStream(dest) {
- var dir = path.dirname(dest);
- if (!fs.existsSync(dir)) {
- mkdir.sync(dir);
- }
- return fs.createWriteStream(dest);
+writeFile.stream = function(filepath, options) {
+ mkdirp.sync(path.dirname(filepath), options);
+ return fs.createWriteStream(filepath, options);
};
+
+/**
+ * Expose `writeFile`
+ */
+
+module.exports = writeFile;
diff --git a/tools/node_modules/eslint/node_modules/write/package.json b/tools/node_modules/eslint/node_modules/write/package.json
index dd3dc91a5b..4805b30afd 100644
--- a/tools/node_modules/eslint/node_modules/write/package.json
+++ b/tools/node_modules/eslint/node_modules/write/package.json
@@ -7,19 +7,29 @@
"url": "https://github.com/jonschlinkert/write/issues"
},
"bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Charlike Mike Reagent",
+ "url": "https://i.am.charlike.online"
+ },
+ {
+ "name": "Jon Schlinkert",
+ "url": "http://twitter.com/jonschlinkert"
+ }
+ ],
"dependencies": {
"mkdirp": "^0.5.1"
},
"deprecated": false,
- "description": "Write files to disk, creating intermediate directories if they don't exist.",
+ "description": "Write data to a file, replacing the file if it already exists and creating any intermediate directories if they don't already exist. Thin wrapper around node's native fs methods.",
"devDependencies": {
- "async": "^1.4.0",
- "delete": "^0.2.1",
- "mocha": "^2.2.5",
- "should": "^7.0.2"
+ "async-each": "^1.0.1",
+ "delete": "^1.1.0",
+ "gulp-format-md": "^1.0.0",
+ "mocha": "^3.4.2"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
},
"files": [
"index.js"
@@ -47,5 +57,32 @@
"scripts": {
"test": "mocha"
},
- "version": "0.2.1"
+ "verb": {
+ "run": true,
+ "toc": false,
+ "layout": "default",
+ "tasks": [
+ "readme"
+ ],
+ "plugins": [
+ "gulp-format-md"
+ ],
+ "related": {
+ "list": [
+ "delete",
+ "read-data",
+ "read-yaml",
+ "write-data",
+ "write-json",
+ "write-yaml"
+ ]
+ },
+ "reflinks": [
+ "verb"
+ ],
+ "lint": {
+ "reflinks": true
+ }
+ },
+ "version": "1.0.3"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json
index 4ef338ee35..316fa200c4 100644
--- a/tools/node_modules/eslint/package.json
+++ b/tools/node_modules/eslint/package.json
@@ -12,30 +12,30 @@
"bundleDependencies": false,
"dependencies": {
"@babel/code-frame": "^7.0.0",
- "ajv": "^6.5.3",
+ "ajv": "^6.9.1",
"chalk": "^2.1.0",
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
- "doctrine": "^2.1.0",
+ "doctrine": "^3.0.0",
"eslint-plugin-markdown": "^1.0.0-rc.1",
"eslint-scope": "^4.0.0",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
- "espree": "^5.0.0",
+ "espree": "^5.0.1",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
- "file-entry-cache": "^2.0.0",
+ "file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
"glob": "^7.1.2",
"globals": "^11.7.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^6.1.0",
+ "inquirer": "^6.2.2",
"js-yaml": "^3.12.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
- "lodash": "^4.17.5",
+ "lodash": "^4.17.11",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
@@ -46,21 +46,22 @@
"semver": "^5.5.1",
"strip-ansi": "^4.0.0",
"strip-json-comments": "^2.0.1",
- "table": "^5.0.2",
+ "table": "^5.2.3",
"text-table": "^0.2.0"
},
"deprecated": false,
"description": "An AST-based pattern checker for JavaScript.",
"devDependencies": {
- "babel-core": "^6.26.3",
- "babel-polyfill": "^6.26.0",
- "babel-preset-es2015": "^6.24.1",
- "babelify": "^8.0.0",
+ "@babel/core": "^7.2.2",
+ "@babel/polyfill": "^7.2.5",
+ "@babel/preset-env": "^7.3.1",
+ "babelify": "^10.0.0",
"beefy": "^2.1.8",
"brfs": "^2.0.0",
"browserify": "^16.2.2",
"chai": "^4.0.1",
"cheerio": "^0.22.0",
+ "common-tags": "^1.8.0",
"coveralls": "^3.0.1",
"dateformat": "^3.0.3",
"ejs": "^2.6.1",
@@ -69,26 +70,26 @@
"eslint-plugin-rulesdir": "^0.1.0",
"eslint-release": "^1.2.0",
"eslint-rule-composer": "^0.3.0",
- "eslump": "^1.6.2",
+ "eslump": "^2.0.0",
"esprima": "^4.0.1",
"istanbul": "^0.4.5",
"jsdoc": "^3.5.5",
- "karma": "^3.0.0",
- "karma-babel-preprocessor": "^7.0.0",
+ "karma": "^3.1.4",
+ "karma-babel-preprocessor": "^8.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.3",
"leche": "^2.2.3",
"load-perf": "^0.2.0",
- "markdownlint": "^0.11.0",
+ "markdownlint": "^0.12.0",
"mocha": "^5.0.5",
- "mock-fs": "^4.6.0",
+ "mock-fs": "^4.8.0",
"npm-license": "^0.3.3",
"proxyquire": "^2.0.1",
- "puppeteer": "^1.9.0",
+ "puppeteer": "^1.12.2",
"shelljs": "^0.8.2",
"sinon": "^3.3.0",
- "temp": "^0.8.3",
+ "temp": "^0.9.0",
"through": "^2.3.8"
},
"engines": {
@@ -133,5 +134,5 @@
"publish-release": "node Makefile.js publishRelease",
"test": "node Makefile.js test"
},
- "version": "5.13.0"
+ "version": "5.14.0"
} \ No newline at end of file