summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-10-25 12:48:14 -0700
committercjihrig <cjihrig@gmail.com>2019-10-28 09:51:24 -0400
commit511f67bcb42b59c9a3a3efab8fed578db100afe1 (patch)
tree8b64f390dd727dd739fd2fb84d69df3c829a9315 /tools
parentb35181f877d5a92e8bb52eb071489f2a7d87494b (diff)
downloadandroid-node-v8-511f67bcb42b59c9a3a3efab8fed578db100afe1.tar.gz
android-node-v8-511f67bcb42b59c9a3a3efab8fed578db100afe1.tar.bz2
android-node-v8-511f67bcb42b59c9a3a3efab8fed578db100afe1.zip
tools: update ESLint to 6.6.0
Update ESLint to 6.6.0 PR-URL: https://github.com/nodejs/node/pull/30123 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/node_modules/eslint/README.md7
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js3
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/cli-engine.js16
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/config-array-factory.js8
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/config-array/config-array.js4
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js2
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/config-array/override-tester.js2
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/file-enumerator.js8
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/formatters/html.js1
-rw-r--r--tools/node_modules/eslint/lib/cli-engine/ignored-paths.js1
-rw-r--r--tools/node_modules/eslint/lib/init/autoconfig.js12
-rw-r--r--tools/node_modules/eslint/lib/init/config-file.js1
-rw-r--r--tools/node_modules/eslint/lib/init/config-initializer.js1
-rw-r--r--tools/node_modules/eslint/lib/init/config-rule.js6
-rw-r--r--tools/node_modules/eslint/lib/init/npm-utils.js5
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js62
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js42
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js121
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/code-path.js21
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js20
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js57
-rw-r--r--tools/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js4
-rw-r--r--tools/node_modules/eslint/lib/linter/linter.js216
-rw-r--r--tools/node_modules/eslint/lib/linter/node-event-generator.js5
-rw-r--r--tools/node_modules/eslint/lib/rule-tester/rule-tester.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/accessor-pairs.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/array-bracket-newline.js27
-rw-r--r--tools/node_modules/eslint/lib/rules/array-bracket-spacing.js24
-rw-r--r--tools/node_modules/eslint/lib/rules/array-callback-return.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/array-element-newline.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/arrow-parens.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/block-scoped-var.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/block-spacing.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/capitalized-comments.js7
-rw-r--r--tools/node_modules/eslint/lib/rules/class-methods-use-this.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/comma-dangle.js38
-rw-r--r--tools/node_modules/eslint/lib/rules/comma-spacing.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/computed-property-spacing.js20
-rw-r--r--tools/node_modules/eslint/lib/rules/consistent-return.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/consistent-this.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/constructor-super.js30
-rw-r--r--tools/node_modules/eslint/lib/rules/curly.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/default-param-last.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/dot-location.js23
-rw-r--r--tools/node_modules/eslint/lib/rules/func-names.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/function-call-argument-newline.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/generator-star-spacing.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/getter-return.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/indent.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/init-declarations.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/jsx-quotes.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/keyword-spacing.js88
-rw-r--r--tools/node_modules/eslint/lib/rules/lines-around-directive.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/max-len.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/max-statements-per-line.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/multiline-ternary.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/newline-after-var.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/newline-before-return.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/newline-per-chained-call.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-class-assign.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/no-confusing-arrow.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/no-console.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/no-const-assign.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-dupe-args.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-dupe-class-members.js7
-rw-r--r--tools/node_modules/eslint/lib/rules/no-dupe-keys.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/no-duplicate-imports.js32
-rw-r--r--tools/node_modules/eslint/lib/rules/no-else-return.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-empty-function.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-eval.js28
-rw-r--r--tools/node_modules/eslint/lib/rules/no-ex-assign.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-bind.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-label.js13
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-parens.js32
-rw-r--r--tools/node_modules/eslint/lib/rules/no-extra-semi.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/no-fallthrough.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/no-func-assign.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-global-assign.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-implicit-coercion.js20
-rw-r--r--tools/node_modules/eslint/lib/rules/no-implied-eval.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/no-invalid-this.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/no-labels.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-lone-blocks.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-loop-func.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/no-magic-numbers.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/no-misleading-character-class.js21
-rw-r--r--tools/node_modules/eslint/lib/rules/no-mixed-operators.js35
-rw-r--r--tools/node_modules/eslint/lib/rules/no-mixed-requires.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/no-multi-spaces.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-native-reassign.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-param-reassign.js35
-rw-r--r--tools/node_modules/eslint/lib/rules/no-redeclare.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/no-regex-spaces.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/no-restricted-imports.js22
-rw-r--r--tools/node_modules/eslint/lib/rules/no-self-assign.js25
-rw-r--r--tools/node_modules/eslint/lib/rules/no-sequences.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-shadow.js5
-rw-r--r--tools/node_modules/eslint/lib/rules/no-tabs.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/no-this-before-super.js25
-rw-r--r--tools/node_modules/eslint/lib/rules/no-trailing-spaces.js26
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js45
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unreachable.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unsafe-finally.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unsafe-negation.js41
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unused-expressions.js18
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unused-labels.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/no-unused-vars.js51
-rw-r--r--tools/node_modules/eslint/lib/rules/no-use-before-define.js25
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-call.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-concat.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-constructor.js36
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-escape.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-rename.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/no-useless-return.js23
-rw-r--r--tools/node_modules/eslint/lib/rules/no-var.js37
-rw-r--r--tools/node_modules/eslint/lib/rules/no-warning-comments.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/object-curly-newline.js17
-rw-r--r--tools/node_modules/eslint/lib/rules/object-curly-spacing.js27
-rw-r--r--tools/node_modules/eslint/lib/rules/object-shorthand.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/operator-assignment.js23
-rw-r--r--tools/node_modules/eslint/lib/rules/padded-blocks.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/padding-line-between-statements.js16
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js12
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-const.js34
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-destructuring.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js36
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-object-spread.js14
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-rest-params.js9
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-spread.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/prefer-template.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/quote-props.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/quotes.js11
-rw-r--r--tools/node_modules/eslint/lib/rules/radix.js15
-rw-r--r--tools/node_modules/eslint/lib/rules/require-await.js7
-rw-r--r--tools/node_modules/eslint/lib/rules/require-yield.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/rest-spread-spacing.js2
-rw-r--r--tools/node_modules/eslint/lib/rules/sort-imports.js7
-rw-r--r--tools/node_modules/eslint/lib/rules/sort-keys.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/space-before-blocks.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/space-in-parens.js8
-rw-r--r--tools/node_modules/eslint/lib/rules/space-infix-ops.js10
-rw-r--r--tools/node_modules/eslint/lib/rules/spaced-comment.js33
-rw-r--r--tools/node_modules/eslint/lib/rules/strict.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/symbol-description.js3
-rw-r--r--tools/node_modules/eslint/lib/rules/template-curly-spacing.js4
-rw-r--r--tools/node_modules/eslint/lib/rules/use-isnan.js43
-rw-r--r--tools/node_modules/eslint/lib/rules/utils/ast-utils.js134
-rw-r--r--tools/node_modules/eslint/lib/rules/utils/fix-tracker.js6
-rw-r--r--tools/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js1
-rw-r--r--tools/node_modules/eslint/lib/rules/vars-on-top.js22
-rw-r--r--tools/node_modules/eslint/lib/shared/config-ops.js4
-rw-r--r--tools/node_modules/eslint/lib/shared/runtime-info.js16
-rw-r--r--tools/node_modules/eslint/lib/shared/traverser.js2
-rw-r--r--tools/node_modules/eslint/lib/source-code/source-code.js16
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js10
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js10
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/cursors.js36
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js2
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/filter-cursor.js4
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js10
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js10
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/index.js178
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/limit-cursor.js4
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js14
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/skip-cursor.js4
-rw-r--r--tools/node_modules/eslint/lib/source-code/token-store/utils.js22
-rw-r--r--tools/node_modules/eslint/node_modules/acorn-jsx/README.md10
-rw-r--r--tools/node_modules/eslint/node_modules/acorn-jsx/index.js111
-rw-r--r--tools/node_modules/eslint/node_modules/acorn-jsx/package.json10
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/index.js95
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/package.json18
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/readme.md28
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/index.js12
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/package.json8
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/readme.md41
-rw-r--r--tools/node_modules/eslint/node_modules/cli-cursor/index.js32
-rw-r--r--tools/node_modules/eslint/node_modules/cli-cursor/license20
-rw-r--r--tools/node_modules/eslint/node_modules/cli-cursor/package.json20
-rw-r--r--tools/node_modules/eslint/node_modules/cli-cursor/readme.md26
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/README.md2
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js2
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js2
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/index.js2
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/package.json15
-rw-r--r--tools/node_modules/eslint/node_modules/emoji-regex/text.js2
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md122
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js4
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js172
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json5
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-utils/README.md10
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-utils/index.js56
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-utils/index.mjs56
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-utils/package.json35
-rw-r--r--tools/node_modules/eslint/node_modules/espree/lib/espree.js390
-rw-r--r--tools/node_modules/eslint/node_modules/espree/package.json6
-rw-r--r--tools/node_modules/eslint/node_modules/figures/index.js26
-rw-r--r--tools/node_modules/eslint/node_modules/figures/license20
-rw-r--r--tools/node_modules/eslint/node_modules/figures/package.json22
-rw-r--r--tools/node_modules/eslint/node_modules/figures/readme.md25
-rw-r--r--tools/node_modules/eslint/node_modules/glob/README.md2
-rw-r--r--tools/node_modules/eslint/node_modules/glob/package.json2
-rw-r--r--tools/node_modules/eslint/node_modules/inquirer/README.md8
-rw-r--r--tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js2
-rw-r--r--tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js3
-rw-r--r--tools/node_modules/eslint/node_modules/inquirer/package.json22
-rw-r--r--tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license20
-rw-r--r--tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json19
-rw-r--r--tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md12
-rw-r--r--tools/node_modules/eslint/node_modules/mimic-fn/index.js10
-rw-r--r--tools/node_modules/eslint/node_modules/mimic-fn/package.json14
-rw-r--r--tools/node_modules/eslint/node_modules/mimic-fn/readme.md5
-rw-r--r--tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json1
-rw-r--r--tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json1
-rw-r--r--tools/node_modules/eslint/node_modules/mute-stream/package.json7
-rw-r--r--tools/node_modules/eslint/node_modules/onetime/index.js41
-rw-r--r--tools/node_modules/eslint/node_modules/onetime/license20
-rw-r--r--tools/node_modules/eslint/node_modules/onetime/package.json16
-rw-r--r--tools/node_modules/eslint/node_modules/onetime/readme.md35
-rw-r--r--tools/node_modules/eslint/node_modules/restore-cursor/index.js2
-rw-r--r--tools/node_modules/eslint/node_modules/restore-cursor/license20
-rw-r--r--tools/node_modules/eslint/node_modules/restore-cursor/package.json16
-rw-r--r--tools/node_modules/eslint/node_modules/restore-cursor/readme.md5
-rw-r--r--tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/license21
-rw-r--r--tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json54
-rw-r--r--tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/index.js17
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js4
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json61
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md39
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/package.json21
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/readme.md8
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js14
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license9
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json62
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md87
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt20
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/README.md73
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/es2015/index.js6
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/es2015/text.js6
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/index.js6
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/package.json55
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/text.js6
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/license21
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/package.json54
-rw-r--r--tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--tools/node_modules/eslint/node_modules/type-fest/license (renamed from tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license)0
-rw-r--r--tools/node_modules/eslint/node_modules/type-fest/package.json59
-rw-r--r--tools/node_modules/eslint/node_modules/type-fest/readme.md118
-rw-r--r--tools/node_modules/eslint/package.json13
258 files changed, 3003 insertions, 2606 deletions
diff --git a/tools/node_modules/eslint/README.md b/tools/node_modules/eslint/README.md
index fbd99b12df..fd0c146687 100644
--- a/tools/node_modules/eslint/README.md
+++ b/tools/node_modules/eslint/README.md
@@ -40,7 +40,7 @@ ESLint is a tool for identifying and reporting on patterns found in ECMAScript/J
## <a name="installation-and-usage"></a>Installation and Usage
-Prerequisites: [Node.js](https://nodejs.org/) (`^8.10.0`, `^10.13.0`, or `>=11.10.1`), npm version 3+.
+Prerequisites: [Node.js](https://nodejs.org/) (`^8.10.0`, `^10.13.0`, or `>=11.10.1`) built with SSL support. (If you are using an official Node.js distribution, SSL is always built in.)
You can install ESLint using npm:
@@ -156,8 +156,9 @@ ESLint follows [semantic versioning](https://semver.org). However, due to the na
* A new CLI capability is created.
* New capabilities to the public API are added (new classes, new methods, new arguments to existing methods, etc.).
* A new formatter is created.
+ * `eslint:recommended` is updated and will result in strictly fewer errors (e.g., rule removals).
* Major release (likely to break your lint build)
- * `eslint:recommended` is updated.
+ * `eslint:recommended` is updated and may result in new errors (e.g., rule additions, most rule option updates).
* A new option to an existing rule that results in ESLint reporting more errors by default.
* An existing formatter is removed.
* Part of the public API is removed or changed in an incompatible way.
@@ -264,7 +265,7 @@ The following companies, organizations, and individuals support ESLint's ongoing
<h3>Gold Sponsors</h3>
<p><a href="https://www.shopify.com"><img src="https://images.opencollective.com/shopify/eeb91aa/logo.png" alt="Shopify" height="96"></a> <a href="http://engineering.salesforce.com"><img src="https://images.opencollective.com/salesforce/ca8f997/logo.png" alt="Salesforce" height="96"></a> <a href="https://badoo.com/team?utm_source=eslint"><img src="https://images.opencollective.com/badoo/2826a3b/logo.png" alt="Badoo" height="96"></a> <a href="https://www.airbnb.com/"><img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb" height="96"></a> <a href="https://opensource.facebook.com"><img src="https://images.opencollective.com/fbopensource/fbb8a5b/logo.png" alt="Facebook Open Source" height="96"></a></p><h3>Silver Sponsors</h3>
<p><a href="https://www.ampproject.org/"><img src="https://images.opencollective.com/amp/c8a3b25/logo.png" alt="AMP Project" height="64"></a></p><h3>Bronze Sponsors</h3>
-<p><a href="https://discordapp.com"><img src="https://images.opencollective.com/discordapp/7e3d9a9/logo.png" alt="Discord" height="32"></a> <a href="https://mixpanel.com"><img src="https://images.opencollective.com/mixpanel/cd682f7/logo.png" alt="Mixpanel" height="32"></a> <a href="https://icons8.com"><img src="https://images.opencollective.com/icons8/0b37d14/logo.png" alt="Free Icons by Icons8" height="32"></a> <a href="https://uxplanet.org/top-ui-ux-design-agencies-user-experience-firms-8c54697e290"><img src="https://images.opencollective.com/ui-ux-design-agencies/cae5dfe/logo.png" alt="UI UX Design Agencies" height="32"></a> <a href="https://clay.global"><img src="https://images.opencollective.com/clayglobal/2468f34/logo.png" alt="clay" height="32"></a> <a href="https://www.vpsserver.com"><img src="https://images.opencollective.com/vpsservercom/logo.png" alt="VPS Server" height="32"></a> <a href="https://themeisle.com"><img src="https://images.opencollective.com/themeisle/logo.png" alt="ThemeIsle" height="32"></a> <a href="https://tekhattan.com"><img src="https://images.opencollective.com/tekhattan/bc73c28/logo.png" alt="TekHattan" height="32"></a> <a href="https://www.marfeel.com/"><img src="https://images.opencollective.com/marfeel/4b88e30/logo.png" alt="Marfeel" height="32"></a> <a href="http://www.firesticktricks.com"><img src="https://images.opencollective.com/fire-stick-tricks/b8fbe2c/logo.png" alt="Fire Stick Tricks" height="32"></a> <a href="https://jsheroes.io/"><img src="https://images.opencollective.com/jsheroes1/9fedf0b/logo.png" alt="JSHeroes " height="32"></a></p>
+<p><a href="https://uxplanet.org/top-ui-ux-design-agencies-user-experience-firms-8c54697e290"><img src="https://images.opencollective.com/ui-ux-design-agencies/cae5dfe/logo.png" alt="UI UX Design Agencies" height="32"></a> <a href="https://www.bugsnag.com/platforms?utm_source=Open Collective&utm_medium=Website&utm_content=open-source&utm_campaign=2019-community&utm_term="><img src="https://images.opencollective.com/bugsnag-stability-monitoring/c2cef36/logo.png" alt="Bugsnag Stability Monitoring" height="32"></a> <a href="https://www.minitool.com"><img src="https://images.opencollective.com/minitool-software-ltd/6d68e16/logo.png" alt="MiniTool Software Ltd" height="32"></a> <a href="https://www.codacy.com/?utm_source=eslint&utm_medium=cpm&utm_campaign=eslint-sponsorship"><img src="https://images.opencollective.com/codacy/ed22716/logo.png" alt="Codacy" height="32"></a> <a href="https://mixpanel.com"><img src="https://images.opencollective.com/mixpanel/cd682f7/logo.png" alt="Mixpanel" height="32"></a> <a href="https://www.vpsserver.com"><img src="https://images.opencollective.com/vpsservercom/logo.png" alt="VPS Server" height="32"></a> <a href="https://icons8.com"><img src="https://images.opencollective.com/icons8/0b37d14/logo.png" alt="Free Icons by Icons8" height="32"></a> <a href="https://www.crosswordsolver.com"><img src="https://images.opencollective.com/crosswordsolver/d4481d6/logo.png" alt="Crosswordsolver" height="32"></a> <a href="https://clay.global"><img src="https://images.opencollective.com/clayglobal/2468f34/logo.png" alt="clay" height="32"></a> <a href="https://discordapp.com"><img src="https://images.opencollective.com/discordapp/7e3d9a9/logo.png" alt="Discord" height="32"></a> <a href="https://themeisle.com"><img src="https://images.opencollective.com/themeisle/logo.png" alt="ThemeIsle" height="32"></a> <a href="https://tekhattan.com"><img src="https://images.opencollective.com/tekhattan/bc73c28/logo.png" alt="TekHattan" height="32"></a> <a href="https://www.marfeel.com/"><img src="https://images.opencollective.com/marfeel/4b88e30/logo.png" alt="Marfeel" height="32"></a> <a href="http://www.firesticktricks.com"><img src="https://images.opencollective.com/fire-stick-tricks/b8fbe2c/logo.png" alt="Fire Stick Tricks" height="32"></a> <a href="https://jsheroes.io/"><img src="https://images.opencollective.com/jsheroes1/9fedf0b/logo.png" alt="JSHeroes " height="32"></a></p>
<!--sponsorsend-->
## <a name="technology-sponsors"></a>Technology Sponsors
diff --git a/tools/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js b/tools/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js
index 13b240f12b..6c914ea491 100644
--- a/tools/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js
+++ b/tools/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js
@@ -152,8 +152,9 @@ function createCLIConfigArray({
*/
class ConfigurationNotFoundError extends Error {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} directoryPath - The directory path.
+ * @param {string} directoryPath The directory path.
*/
constructor(directoryPath) {
super(`No ESLint configuration found in ${directoryPath}.`);
diff --git a/tools/node_modules/eslint/lib/cli-engine/cli-engine.js b/tools/node_modules/eslint/lib/cli-engine/cli-engine.js
index 3c67d33daa..8afd262708 100644
--- a/tools/node_modules/eslint/lib/cli-engine/cli-engine.js
+++ b/tools/node_modules/eslint/lib/cli-engine/cli-engine.js
@@ -145,7 +145,7 @@ function validateFixTypes(fixTypes) {
/**
* It will calculate the error and warning count for collection of messages per file
- * @param {LintMessage[]} messages - Collection of messages
+ * @param {LintMessage[]} messages Collection of messages
* @returns {Object} Contains the stats
* @private
*/
@@ -173,7 +173,7 @@ function calculateStatsPerFile(messages) {
/**
* It will calculate the error and warning count for collection of results from all files
- * @param {LintResult[]} results - Collection of messages from all the files
+ * @param {LintResult[]} results Collection of messages from all the files
* @returns {Object} Contains the stats
* @private
*/
@@ -272,8 +272,8 @@ function verifyText({
/**
* Returns result with warning by ignore settings
- * @param {string} filePath - File path of checked code
- * @param {string} baseDir - Absolute path of base directory
+ * @param {string} filePath File path of checked code
+ * @param {string} baseDir Absolute path of base directory
* @returns {LintResult} Result with single warning
* @private
*/
@@ -387,7 +387,6 @@ function isErrorMessage(message) {
* name will be the `cacheFile/.cache_hashOfCWD`
*
* if cacheFile points to a file or looks like a file then in will just use that file
- *
* @param {string} cacheFile The name of file to be used to store the cache
* @param {string} cwd Current working directory
* @returns {string} the resolved path to the cache file
@@ -568,7 +567,7 @@ class CLIEngine {
});
const lintResultCache =
options.cache ? new LintResultCache(cacheFilePath) : null;
- const linter = new Linter();
+ const linter = new Linter({ cwd: options.cwd });
/** @type {ConfigArray[]} */
const lastConfigArrays = [configArrayFactory.getConfigArrayForFile()];
@@ -668,11 +667,14 @@ class CLIEngine {
addPlugin(name, pluginObject) {
const {
additionalPluginPool,
- configArrayFactory
+ configArrayFactory,
+ lastConfigArrays
} = internalSlotsMap.get(this);
additionalPluginPool.set(name, pluginObject);
configArrayFactory.clearCache();
+ lastConfigArrays.length = 1;
+ lastConfigArrays[0] = configArrayFactory.getConfigArrayForFile();
}
/**
diff --git a/tools/node_modules/eslint/lib/cli-engine/config-array-factory.js b/tools/node_modules/eslint/lib/cli-engine/config-array-factory.js
index 6e1ba1e02b..cf529b6ee6 100644
--- a/tools/node_modules/eslint/lib/cli-engine/config-array-factory.js
+++ b/tools/node_modules/eslint/lib/cli-engine/config-array-factory.js
@@ -859,8 +859,14 @@ class ConfigArrayFactory {
if (filePath) {
try {
writeDebugLogForLoading(request, relativeTo, filePath);
+
+ const startTime = Date.now();
+ const pluginDefinition = require(filePath);
+
+ debug(`Plugin ${filePath} loaded in: ${Date.now() - startTime}ms`);
+
return new ConfigDependency({
- definition: normalizePlugin(require(filePath)),
+ definition: normalizePlugin(pluginDefinition),
filePath,
id,
importerName,
diff --git a/tools/node_modules/eslint/lib/cli-engine/config-array/config-array.js b/tools/node_modules/eslint/lib/cli-engine/config-array/config-array.js
index 6383c02115..089ff305a2 100644
--- a/tools/node_modules/eslint/lib/cli-engine/config-array/config-array.js
+++ b/tools/node_modules/eslint/lib/cli-engine/config-array/config-array.js
@@ -126,7 +126,6 @@ function isNonNullObject(x) {
*
* Assign every property values of `y` to `x` if `x` doesn't have the property.
* If `x`'s property value is an object, it does recursive.
- *
* @param {Object} target The destination to merge
* @param {Object|undefined} source The source to merge.
* @returns {void}
@@ -157,7 +156,6 @@ function mergeWithoutOverwrite(target, source) {
/**
* Merge plugins.
* `target`'s definition is prior to `source`'s.
- *
* @param {Record<string, DependentPlugin>} target The destination to merge
* @param {Record<string, DependentPlugin>|undefined} source The source to merge.
* @returns {void}
@@ -187,7 +185,6 @@ function mergePlugins(target, source) {
/**
* Merge rule configs.
* `target`'s definition is prior to `source`'s.
- *
* @param {Record<string, Array>} target The destination to merge
* @param {Record<string, RuleConf>|undefined} source The source to merge.
* @returns {void}
@@ -382,7 +379,6 @@ function ensurePluginMemberMaps(instance) {
* You need to call `ConfigArray#extractConfig(filePath)` method in order to
* extract, merge and get only the config data which is related to an arbitrary
* file.
- *
* @extends {Array<ConfigArrayElement>}
*/
class ConfigArray extends Array {
diff --git a/tools/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js b/tools/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js
index 8db9ff00c5..0d5f6f7139 100644
--- a/tools/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js
+++ b/tools/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js
@@ -81,6 +81,7 @@ class ConfigDependency {
this.importerPath = importerPath;
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {Object} a JSON compatible object.
*/
@@ -95,6 +96,7 @@ class ConfigDependency {
return obj;
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {Object} an object to display by `console.log()`.
*/
diff --git a/tools/node_modules/eslint/lib/cli-engine/config-array/override-tester.js b/tools/node_modules/eslint/lib/cli-engine/config-array/override-tester.js
index d6695423e2..67c8a6ed8a 100644
--- a/tools/node_modules/eslint/lib/cli-engine/config-array/override-tester.js
+++ b/tools/node_modules/eslint/lib/cli-engine/config-array/override-tester.js
@@ -166,6 +166,7 @@ class OverrideTester {
));
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {Object} a JSON compatible object.
*/
@@ -182,6 +183,7 @@ class OverrideTester {
};
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {Object} an object to display by `console.log()`.
*/
diff --git a/tools/node_modules/eslint/lib/cli-engine/file-enumerator.js b/tools/node_modules/eslint/lib/cli-engine/file-enumerator.js
index a027359ae5..38f55de039 100644
--- a/tools/node_modules/eslint/lib/cli-engine/file-enumerator.js
+++ b/tools/node_modules/eslint/lib/cli-engine/file-enumerator.js
@@ -149,9 +149,10 @@ function readdirSafeSync(directoryPath) {
*/
class NoFilesFoundError extends Error {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} pattern - The glob pattern which was not found.
- * @param {boolean} globDisabled - If `true` then the pattern was a glob pattern, but glob was disabled.
+ * @param {string} pattern The glob pattern which was not found.
+ * @param {boolean} globDisabled If `true` then the pattern was a glob pattern, but glob was disabled.
*/
constructor(pattern, globDisabled) {
super(`No files matching '${pattern}' were found${globDisabled ? " (glob was disabled)" : ""}.`);
@@ -165,8 +166,9 @@ class NoFilesFoundError extends Error {
*/
class AllFilesIgnoredError extends Error {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} pattern - The glob pattern which was not found.
+ * @param {string} pattern The glob pattern which was not found.
*/
constructor(pattern) {
super(`All files matched by '${pattern}' are ignored.`);
diff --git a/tools/node_modules/eslint/lib/cli-engine/formatters/html.js b/tools/node_modules/eslint/lib/cli-engine/formatters/html.js
index 091eab1c4a..69f7395550 100644
--- a/tools/node_modules/eslint/lib/cli-engine/formatters/html.js
+++ b/tools/node_modules/eslint/lib/cli-engine/formatters/html.js
@@ -96,6 +96,7 @@ function renderMessages(messages, parentIndex, rulesMeta) {
}).join("\n");
}
+// eslint-disable-next-line jsdoc/require-description
/**
* @param {Array} results Test results.
* @param {Object} rulesMeta Dictionary containing metadata for each rule executed by the analysis.
diff --git a/tools/node_modules/eslint/lib/cli-engine/ignored-paths.js b/tools/node_modules/eslint/lib/cli-engine/ignored-paths.js
index 12dfce0666..dec8e18604 100644
--- a/tools/node_modules/eslint/lib/cli-engine/ignored-paths.js
+++ b/tools/node_modules/eslint/lib/cli-engine/ignored-paths.js
@@ -121,6 +121,7 @@ function relativize(globPattern, relativePathToOldBaseDir) {
*/
class IgnoredPaths {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {Object} providedOptions object containing 'ignore', 'ignorePath' and 'patterns' properties
*/
diff --git a/tools/node_modules/eslint/lib/init/autoconfig.js b/tools/node_modules/eslint/lib/init/autoconfig.js
index 19c4986c31..64be3d2a84 100644
--- a/tools/node_modules/eslint/lib/init/autoconfig.js
+++ b/tools/node_modules/eslint/lib/init/autoconfig.js
@@ -31,7 +31,6 @@ const MAX_CONFIG_COMBINATIONS = 17, // 16 combinations + 1 for severity only
/**
* Information about a rule configuration, in the context of a Registry.
- *
* @typedef {Object} registryItem
* @param {ruleConfig} config A valid configuration for the rule
* @param {number} specificity The number of elements in the ruleConfig array
@@ -70,6 +69,7 @@ function makeRegistryItems(rulesConfig) {
*/
class Registry {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {rulesConfig} [rulesConfig] Hash of rule names and arrays of possible configurations
*/
@@ -82,7 +82,6 @@ class Registry {
*
* It will set the registry's `rule` property to an object having rule names
* as keys and an array of registryItems as values.
- *
* @returns {void}
*/
populateFromCoreRules() {
@@ -101,7 +100,6 @@ class Registry {
* configurations.
*
* The length of the returned array will be <= MAX_CONFIG_COMBINATIONS.
- *
* @returns {Object[]} "rules" configurations to use for linting
*/
buildRuleSets() {
@@ -114,7 +112,6 @@ class Registry {
*
* This is broken out into its own function so that it doesn't need to be
* created inside of the while loop.
- *
* @param {string} rule The ruleId to add.
* @returns {void}
*/
@@ -162,7 +159,6 @@ class Registry {
*
* Note: this also removes rule configurations which were not linted
* (meaning, they have an undefined errorCount).
- *
* @returns {void}
*/
stripFailingConfigs() {
@@ -185,7 +181,6 @@ class Registry {
/**
* Removes rule configurations which were not included in a ruleSet
- *
* @returns {void}
*/
stripExtraConfigs() {
@@ -204,7 +199,6 @@ class Registry {
* Creates a registry of rules which had no error-free configs.
* The new registry is intended to be analyzed to determine whether its rules
* should be disabled or set to warning.
- *
* @returns {Registry} A registry of failing rules.
*/
getFailingRulesRegistry() {
@@ -225,7 +219,6 @@ class Registry {
/**
* Create an eslint config for any rules which only have one configuration
* in the registry.
- *
* @returns {Object} An eslint config with rules section populated
*/
createConfig() {
@@ -243,7 +236,6 @@ class Registry {
/**
* Return a cloned registry containing only configs with a desired specificity
- *
* @param {number} specificity Only keep configs with this specificity
* @returns {Registry} A registry of rules
*/
@@ -261,7 +253,6 @@ class Registry {
/**
* Lint SourceCodes against all configurations in the registry, and record results
- *
* @param {Object[]} sourceCodes SourceCode objects for each filename
* @param {Object} config ESLint config object
* @param {progressCallback} [cb] Optional callback for reporting execution status
@@ -327,7 +318,6 @@ class Registry {
*
* This will return a new config with `"extends": "eslint:recommended"` and
* only the rules which have configurations different from the recommended config.
- *
* @param {Object} config config object
* @returns {Object} config object using `"extends": "eslint:recommended"`
*/
diff --git a/tools/node_modules/eslint/lib/init/config-file.js b/tools/node_modules/eslint/lib/init/config-file.js
index 77f14a4729..960b572cdd 100644
--- a/tools/node_modules/eslint/lib/init/config-file.js
+++ b/tools/node_modules/eslint/lib/init/config-file.js
@@ -23,7 +23,6 @@ const debug = require("debug")("eslint:config-file");
* Determines sort order for object keys for json-stable-stringify
*
* see: https://github.com/samn/json-stable-stringify#cmp
- *
* @param {Object} a The first comparison object ({key: akey, value: avalue})
* @param {Object} b The second comparison object ({key: bkey, value: bvalue})
* @returns {number} 1 or -1, used in stringify cmp method
diff --git a/tools/node_modules/eslint/lib/init/config-initializer.js b/tools/node_modules/eslint/lib/init/config-initializer.js
index 2e47e902c7..48e56ce526 100644
--- a/tools/node_modules/eslint/lib/init/config-initializer.js
+++ b/tools/node_modules/eslint/lib/init/config-initializer.js
@@ -147,7 +147,6 @@ function getModulesList(config, installESLint) {
*
* Note: This clones the config object and returns a new config to avoid mutating
* the original config parameter.
- *
* @param {Object} answers answers received from inquirer
* @param {Object} config config object
* @returns {Object} config object with configured rules
diff --git a/tools/node_modules/eslint/lib/init/config-rule.js b/tools/node_modules/eslint/lib/init/config-rule.js
index e40feb7145..7aec89c3df 100644
--- a/tools/node_modules/eslint/lib/init/config-rule.js
+++ b/tools/node_modules/eslint/lib/init/config-rule.js
@@ -33,7 +33,6 @@ function explodeArray(xs) {
*
* For example:
* combineArrays([a, [b, c]], [x, y]); // -> [[a, x], [a, y], [b, c, x], [b, c, y]]
- *
* @param {Array} arr1 The first array to combine.
* @param {Array} arr2 The second array to combine.
* @returns {Array} A mixture of the elements of the first and second arrays.
@@ -71,7 +70,6 @@ function combineArrays(arr1, arr2) {
* [{before: true}, {before: false}],
* [{after: true}, {after: false}]
* ]
- *
* @param {Object[]} objects Array of objects, each with one property/value pair
* @returns {Array[]} Array of arrays of objects grouped by property
*/
@@ -98,7 +96,6 @@ function groupByProperty(objects) {
* element in the array is the severity, and is the only required element.
* Configs may also have one or more additional elements to specify rule
* configuration or options.
- *
* @typedef {Array|number} ruleConfig
* @param {number} 0 The rule's severity (0, 1, 2).
*/
@@ -134,7 +131,6 @@ function groupByProperty(objects) {
* {before: false, after: true},
* {before: false, after: false}
* ]
- *
* @param {Object[]} objArr1 Single key/value objects, all with the same key
* @param {Object[]} objArr2 Single key/value objects, all with another key
* @returns {Object[]} Combined objects for each combination of input properties and values
@@ -178,6 +174,7 @@ function combinePropertyObjects(objArr1, objArr2) {
*/
class RuleConfigSet {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {ruleConfig[]} configs Valid rule configurations
*/
@@ -193,7 +190,6 @@ class RuleConfigSet {
/**
* Add a severity level to the front of all configs in the instance.
* This should only be called after all configs have been added to the instance.
- *
* @returns {void}
*/
addErrorSeverity() {
diff --git a/tools/node_modules/eslint/lib/init/npm-utils.js b/tools/node_modules/eslint/lib/init/npm-utils.js
index 3d4a896b6f..28c198fc8a 100644
--- a/tools/node_modules/eslint/lib/init/npm-utils.js
+++ b/tools/node_modules/eslint/lib/init/npm-utils.js
@@ -21,7 +21,6 @@ const fs = require("fs"),
/**
* Find the closest package.json file, starting at process.cwd (by default),
* and working up to root.
- *
* @param {string} [startDir=process.cwd()] Starting directory
* @returns {string} Absolute path to closest package.json file
*/
@@ -88,7 +87,6 @@ function fetchPeerDependencies(packageName) {
/**
* Check whether node modules are include in a project's package.json.
- *
* @param {string[]} packages Array of node module names
* @param {Object} opt Options Object
* @param {boolean} opt.dependencies Set to true to check for direct dependencies
@@ -136,7 +134,6 @@ function check(packages, opt) {
* package.json.
*
* Convenience wrapper around check().
- *
* @param {string[]} packages Array of node modules to check.
* @param {string} rootDir The directory contianing a package.json
* @returns {Object} An object whose keys are the module names
@@ -151,7 +148,6 @@ function checkDeps(packages, rootDir) {
* package.json.
*
* Convenience wrapper around check().
- *
* @param {string[]} packages Array of node modules to check.
* @returns {Object} An object whose keys are the module names
* and values are booleans indicating installation.
@@ -162,7 +158,6 @@ function checkDevDeps(packages) {
/**
* Check whether package.json is found in current path.
- *
* @param {string} [startDir] Starting directory
* @returns {boolean} Whether a package.json is found in current path.
*/
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js
index 821477aef9..6822ae2be0 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js
@@ -22,8 +22,7 @@ const assert = require("assert"),
/**
* Checks whether or not a given node is a `case` node (not `default` node).
- *
- * @param {ASTNode} node - A `SwitchCase` node to check.
+ * @param {ASTNode} node A `SwitchCase` node to check.
* @returns {boolean} `true` if the node is a `case` node (not `default` node).
*/
function isCaseNode(node) {
@@ -33,8 +32,7 @@ function isCaseNode(node) {
/**
* Checks whether the given logical operator is taken into account for the code
* path analysis.
- *
- * @param {string} operator - The operator found in the LogicalExpression node
+ * @param {string} operator The operator found in the LogicalExpression node
* @returns {boolean} `true` if the operator is "&&" or "||"
*/
function isHandledLogicalOperator(operator) {
@@ -43,8 +41,7 @@ function isHandledLogicalOperator(operator) {
/**
* Gets the label if the parent node of a given node is a LabeledStatement.
- *
- * @param {ASTNode} node - A node to get.
+ * @param {ASTNode} node A node to get.
* @returns {string|null} The label or `null`.
*/
function getLabel(node) {
@@ -57,8 +54,7 @@ function getLabel(node) {
/**
* Checks whether or not a given logical expression node goes different path
* between the `true` case and the `false` case.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a test of a choice statement.
*/
function isForkingByTrueOrFalse(node) {
@@ -86,8 +82,7 @@ function isForkingByTrueOrFalse(node) {
* This is used to detect infinity loops (e.g. `while (true) {}`).
* Statements preceded by an infinity loop are unreachable if the loop didn't
* have any `break` statement.
- *
- * @param {ASTNode} node - A node to get.
+ * @param {ASTNode} node A node to get.
* @returns {boolean|undefined} a boolean value if the node is a Literal node,
* otherwise `undefined`.
*/
@@ -102,8 +97,7 @@ function getBooleanValueIfSimpleConstant(node) {
* Checks that a given identifier node is a reference or not.
*
* This is used to detect the first throwable node in a `try` block.
- *
- * @param {ASTNode} node - An Identifier node to check.
+ * @param {ASTNode} node An Identifier node to check.
* @returns {boolean} `true` if the node is a reference.
*/
function isIdentifierReference(node) {
@@ -153,9 +147,8 @@ function isIdentifierReference(node) {
*
* In this process, both "onCodePathSegmentStart" and "onCodePathSegmentEnd"
* events are fired.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function forwardCurrentToHead(analyzer, node) {
@@ -211,9 +204,8 @@ function forwardCurrentToHead(analyzer, node) {
/**
* Updates the current segment with empty.
* This is called at the last of functions or the program.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function leaveFromCurrentSegment(analyzer, node) {
@@ -242,9 +234,8 @@ function leaveFromCurrentSegment(analyzer, node) {
*
* For example, if the node is `parent.consequent`, this creates a fork from the
* current path.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function preprocess(analyzer, node) {
@@ -352,9 +343,8 @@ function preprocess(analyzer, node) {
/**
* Updates the code path due to the type of a given node in entering.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function processCodePathToEnter(analyzer, node) {
@@ -449,9 +439,8 @@ function processCodePathToEnter(analyzer, node) {
/**
* Updates the code path due to the type of a given node in leaving.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function processCodePathToExit(analyzer, node) {
@@ -563,9 +552,8 @@ function processCodePathToExit(analyzer, node) {
/**
* Updates the code path to finalize the current code path.
- *
- * @param {CodePathAnalyzer} analyzer - The instance.
- * @param {ASTNode} node - The current AST node.
+ * @param {CodePathAnalyzer} analyzer The instance.
+ * @param {ASTNode} node The current AST node.
* @returns {void}
*/
function postprocess(analyzer, node) {
@@ -609,8 +597,9 @@ function postprocess(analyzer, node) {
*/
class CodePathAnalyzer {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {EventGenerator} eventGenerator - An event generator to wrap.
+ * @param {EventGenerator} eventGenerator An event generator to wrap.
*/
constructor(eventGenerator) {
this.original = eventGenerator;
@@ -624,8 +613,7 @@ class CodePathAnalyzer {
/**
* Does the process to enter a given AST node.
* This updates state of analysis and calls `enterNode` of the wrapped.
- *
- * @param {ASTNode} node - A node which is entering.
+ * @param {ASTNode} node A node which is entering.
* @returns {void}
*/
enterNode(node) {
@@ -651,8 +639,7 @@ class CodePathAnalyzer {
/**
* Does the process to leave a given AST node.
* This updates state of analysis and calls `leaveNode` of the wrapped.
- *
- * @param {ASTNode} node - A node which is leaving.
+ * @param {ASTNode} node A node which is leaving.
* @returns {void}
*/
leaveNode(node) {
@@ -676,9 +663,8 @@ class CodePathAnalyzer {
/**
* This is called on a code path looped.
* Then this raises a looped event.
- *
- * @param {CodePathSegment} fromSegment - A segment of prev.
- * @param {CodePathSegment} toSegment - A segment of next.
+ * @param {CodePathSegment} fromSegment A segment of prev.
+ * @param {CodePathSegment} toSegment A segment of next.
* @returns {void}
*/
onLooped(fromSegment, toSegment) {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js
index 8145f92801..6b17b25c7f 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js
@@ -17,8 +17,7 @@ const debug = require("./debug-helpers");
/**
* Checks whether or not a given segment is reachable.
- *
- * @param {CodePathSegment} segment - A segment to check.
+ * @param {CodePathSegment} segment A segment to check.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -34,11 +33,12 @@ function isReachable(segment) {
*/
class CodePathSegment {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} id - An identifier.
- * @param {CodePathSegment[]} allPrevSegments - An array of the previous segments.
+ * @param {string} id An identifier.
+ * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.
* This array includes unreachable segments.
- * @param {boolean} reachable - A flag which shows this is reachable.
+ * @param {boolean} reachable A flag which shows this is reachable.
*/
constructor(id, allPrevSegments, reachable) {
@@ -98,8 +98,7 @@ class CodePathSegment {
/**
* Checks a given previous segment is coming from the end of a loop.
- *
- * @param {CodePathSegment} segment - A previous segment to check.
+ * @param {CodePathSegment} segment A previous segment to check.
* @returns {boolean} `true` if the segment is coming from the end of a loop.
*/
isLoopedPrevSegment(segment) {
@@ -108,8 +107,7 @@ class CodePathSegment {
/**
* Creates the root segment.
- *
- * @param {string} id - An identifier.
+ * @param {string} id An identifier.
* @returns {CodePathSegment} The created segment.
*/
static newRoot(id) {
@@ -118,9 +116,8 @@ class CodePathSegment {
/**
* Creates a segment that follows given segments.
- *
- * @param {string} id - An identifier.
- * @param {CodePathSegment[]} allPrevSegments - An array of the previous segments.
+ * @param {string} id An identifier.
+ * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.
* @returns {CodePathSegment} The created segment.
*/
static newNext(id, allPrevSegments) {
@@ -133,9 +130,8 @@ class CodePathSegment {
/**
* Creates an unreachable segment that follows given segments.
- *
- * @param {string} id - An identifier.
- * @param {CodePathSegment[]} allPrevSegments - An array of the previous segments.
+ * @param {string} id An identifier.
+ * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.
* @returns {CodePathSegment} The created segment.
*/
static newUnreachable(id, allPrevSegments) {
@@ -154,9 +150,8 @@ class CodePathSegment {
* Creates a segment that follows given segments.
* This factory method does not connect with `allPrevSegments`.
* But this inherits `reachable` flag.
- *
- * @param {string} id - An identifier.
- * @param {CodePathSegment[]} allPrevSegments - An array of the previous segments.
+ * @param {string} id An identifier.
+ * @param {CodePathSegment[]} allPrevSegments An array of the previous segments.
* @returns {CodePathSegment} The created segment.
*/
static newDisconnected(id, allPrevSegments) {
@@ -167,8 +162,7 @@ class CodePathSegment {
* Makes a given segment being used.
*
* And this function registers the segment into the previous segments as a next.
- *
- * @param {CodePathSegment} segment - A segment to mark.
+ * @param {CodePathSegment} segment A segment to mark.
* @returns {void}
*/
static markUsed(segment) {
@@ -195,9 +189,8 @@ class CodePathSegment {
/**
* Marks a previous segment as looped.
- *
- * @param {CodePathSegment} segment - A segment.
- * @param {CodePathSegment} prevSegment - A previous segment to mark.
+ * @param {CodePathSegment} segment A segment.
+ * @param {CodePathSegment} prevSegment A previous segment to mark.
* @returns {void}
*/
static markPrevSegmentAsLooped(segment, prevSegment) {
@@ -206,8 +199,7 @@ class CodePathSegment {
/**
* Replaces unused segments with the previous segments of each unused segment.
- *
- * @param {CodePathSegment[]} segments - An array of segments to replace.
+ * @param {CodePathSegment[]} segments An array of segments to replace.
* @returns {CodePathSegment[]} The replaced array.
*/
static flattenUnusedSegments(segments) {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js
index 57da10fa91..75de1bc6ce 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js
@@ -22,11 +22,10 @@ const CodePathSegment = require("./code-path-segment"),
* array as well.
*
* This adds only reachable and used segments.
- *
- * @param {CodePathSegment[]} dest - A destination array (`returnedSegments` or `thrownSegments`).
- * @param {CodePathSegment[]} others - Another destination array (`returnedSegments` or `thrownSegments`).
- * @param {CodePathSegment[]} all - The unified destination array (`finalSegments`).
- * @param {CodePathSegment[]} segments - Segments to add.
+ * @param {CodePathSegment[]} dest A destination array (`returnedSegments` or `thrownSegments`).
+ * @param {CodePathSegment[]} others Another destination array (`returnedSegments` or `thrownSegments`).
+ * @param {CodePathSegment[]} all The unified destination array (`finalSegments`).
+ * @param {CodePathSegment[]} segments Segments to add.
* @returns {void}
*/
function addToReturnedOrThrown(dest, others, all, segments) {
@@ -42,9 +41,8 @@ function addToReturnedOrThrown(dest, others, all, segments) {
/**
* Gets a loop-context for a `continue` statement.
- *
- * @param {CodePathState} state - A state to get.
- * @param {string} label - The label of a `continue` statement.
+ * @param {CodePathState} state A state to get.
+ * @param {string} label The label of a `continue` statement.
* @returns {LoopContext} A loop-context for a `continue` statement.
*/
function getContinueContext(state, label) {
@@ -67,9 +65,8 @@ function getContinueContext(state, label) {
/**
* Gets a context for a `break` statement.
- *
- * @param {CodePathState} state - A state to get.
- * @param {string} label - The label of a `break` statement.
+ * @param {CodePathState} state A state to get.
+ * @param {string} label The label of a `break` statement.
* @returns {LoopContext|SwitchContext} A context for a `break` statement.
*/
function getBreakContext(state, label) {
@@ -88,8 +85,7 @@ function getBreakContext(state, label) {
/**
* Gets a context for a `return` statement.
- *
- * @param {CodePathState} state - A state to get.
+ * @param {CodePathState} state A state to get.
* @returns {TryContext|CodePathState} A context for a `return` statement.
*/
function getReturnContext(state) {
@@ -107,8 +103,7 @@ function getReturnContext(state) {
/**
* Gets a context for a `throw` statement.
- *
- * @param {CodePathState} state - A state to get.
+ * @param {CodePathState} state A state to get.
* @returns {TryContext|CodePathState} A context for a `throw` statement.
*/
function getThrowContext(state) {
@@ -128,9 +123,8 @@ function getThrowContext(state) {
/**
* Removes a given element from a given array.
- *
- * @param {any[]} xs - An array to remove the specific element.
- * @param {any} x - An element to be removed.
+ * @param {any[]} xs An array to remove the specific element.
+ * @param {any} x An element to be removed.
* @returns {void}
*/
function remove(xs, x) {
@@ -143,9 +137,8 @@ function remove(xs, x) {
* This is used in a process for switch statements.
* If there is the "default" chunk before other cases, the order is different
* between node's and running's.
- *
- * @param {CodePathSegment[]} prevSegments - Forward segments to disconnect.
- * @param {CodePathSegment[]} nextSegments - Backward segments to disconnect.
+ * @param {CodePathSegment[]} prevSegments Forward segments to disconnect.
+ * @param {CodePathSegment[]} nextSegments Backward segments to disconnect.
* @returns {void}
*/
function removeConnection(prevSegments, nextSegments) {
@@ -162,10 +155,9 @@ function removeConnection(prevSegments, nextSegments) {
/**
* Creates looping path.
- *
- * @param {CodePathState} state - The instance.
- * @param {CodePathSegment[]} unflattenedFromSegments - Segments which are source.
- * @param {CodePathSegment[]} unflattenedToSegments - Segments which are destination.
+ * @param {CodePathState} state The instance.
+ * @param {CodePathSegment[]} unflattenedFromSegments Segments which are source.
+ * @param {CodePathSegment[]} unflattenedToSegments Segments which are destination.
* @returns {void}
*/
function makeLooped(state, unflattenedFromSegments, unflattenedToSegments) {
@@ -200,10 +192,9 @@ function makeLooped(state, unflattenedFromSegments, unflattenedToSegments) {
*
* - Adds `false` paths to paths which are leaving from the loop.
* - Sets `true` paths to paths which go to the body.
- *
- * @param {LoopContext} context - A loop context to modify.
- * @param {ChoiceContext} choiceContext - A choice context of this loop.
- * @param {CodePathSegment[]} head - The current head paths.
+ * @param {LoopContext} context A loop context to modify.
+ * @param {ChoiceContext} choiceContext A choice context of this loop.
+ * @param {CodePathSegment[]} head The current head paths.
* @returns {void}
*/
function finalizeTestSegmentsOfFor(context, choiceContext, head) {
@@ -227,10 +218,11 @@ function finalizeTestSegmentsOfFor(context, choiceContext, head) {
*/
class CodePathState {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {IdGenerator} idGenerator - An id generator to generate id for code
+ * @param {IdGenerator} idGenerator An id generator to generate id for code
* path segments.
- * @param {Function} onLooped - A callback function to notify looping.
+ * @param {Function} onLooped A callback function to notify looping.
*/
constructor(idGenerator, onLooped) {
this.idGenerator = idGenerator;
@@ -275,8 +267,7 @@ class CodePathState {
/**
* Creates and stacks new forking context.
- *
- * @param {boolean} forkLeavingPath - A flag which shows being in a
+ * @param {boolean} forkLeavingPath A flag which shows being in a
* "finally" block.
* @returns {ForkContext} The created context.
*/
@@ -313,7 +304,6 @@ class CodePathState {
/**
* Creates a bypass path.
* This is used for such as IfStatement which does not have "else" chunk.
- *
* @returns {void}
*/
forkBypassPath() {
@@ -346,12 +336,11 @@ class CodePathState {
* a -> foo();
* a -> b -> foo();
* a -> b -> bar();
- *
- * @param {string} kind - A kind string.
+ * @param {string} kind A kind string.
* If the new context is LogicalExpression's, this is `"&&"` or `"||"`.
* If it's IfStatement's or ConditionalExpression's, this is `"test"`.
* Otherwise, this is `"loop"`.
- * @param {boolean} isForkingAsResult - A flag that shows that goes different
+ * @param {boolean} isForkingAsResult A flag that shows that goes different
* paths between `true` and `false`.
* @returns {void}
*/
@@ -368,7 +357,6 @@ class CodePathState {
/**
* Pops the last choice context and finalizes it.
- *
* @returns {ChoiceContext} The popped context.
*/
popChoiceContext() {
@@ -456,7 +444,6 @@ class CodePathState {
/**
* Makes a code path segment of the right-hand operand of a logical
* expression.
- *
* @returns {void}
*/
makeLogicalRight() {
@@ -500,7 +487,6 @@ class CodePathState {
/**
* Makes a code path segment of the `if` block.
- *
* @returns {void}
*/
makeIfConsequent() {
@@ -527,7 +513,6 @@ class CodePathState {
/**
* Makes a code path segment of the `else` block.
- *
* @returns {void}
*/
makeIfAlternate() {
@@ -554,10 +539,9 @@ class CodePathState {
/**
* Creates a context object of SwitchStatement and stacks it.
- *
- * @param {boolean} hasCase - `true` if the switch statement has one or more
+ * @param {boolean} hasCase `true` if the switch statement has one or more
* case parts.
- * @param {string|null} label - The label text.
+ * @param {string|null} label The label text.
* @returns {void}
*/
pushSwitchContext(hasCase, label) {
@@ -581,7 +565,6 @@ class CodePathState {
* - Creates the next code path segment from `context.brokenForkContext`.
* - If the last `SwitchCase` node is not a `default` part, creates a path
* to the `default` body.
- *
* @returns {void}
*/
popSwitchContext() {
@@ -655,9 +638,8 @@ class CodePathState {
/**
* Makes a code path segment for a `SwitchCase` node.
- *
- * @param {boolean} isEmpty - `true` if the body is empty.
- * @param {boolean} isDefault - `true` if the body is the default case.
+ * @param {boolean} isEmpty `true` if the body is empty.
+ * @param {boolean} isDefault `true` if the body is the default case.
* @returns {void}
*/
makeSwitchCaseBody(isEmpty, isDefault) {
@@ -706,8 +688,7 @@ class CodePathState {
/**
* Creates a context object of TryStatement and stacks it.
- *
- * @param {boolean} hasFinalizer - `true` if the try statement has a
+ * @param {boolean} hasFinalizer `true` if the try statement has a
* `finally` block.
* @returns {void}
*/
@@ -729,7 +710,6 @@ class CodePathState {
/**
* Pops the last context of TryStatement and finalizes it.
- *
* @returns {void}
*/
popTryContext() {
@@ -785,7 +765,6 @@ class CodePathState {
/**
* Makes a code path segment for a `catch` block.
- *
* @returns {void}
*/
makeCatchBlock() {
@@ -814,7 +793,6 @@ class CodePathState {
* In the `finally` block, parallel paths are created. The parallel paths
* are used as leaving-paths. The leaving-paths are paths from `return`
* statements and `throw` statements in a `try` block or a `catch` block.
- *
* @returns {void}
*/
makeFinallyBlock() {
@@ -874,7 +852,6 @@ class CodePathState {
/**
* Makes a code path segment from the first throwable node to the `catch`
* block or the `finally` block.
- *
* @returns {void}
*/
makeFirstThrowablePathInTryBlock() {
@@ -903,11 +880,10 @@ class CodePathState {
/**
* Creates a context object of a loop statement and stacks it.
- *
- * @param {string} type - The type of the node which was triggered. One of
+ * @param {string} type The type of the node which was triggered. One of
* `WhileStatement`, `DoWhileStatement`, `ForStatement`, `ForInStatement`,
* and `ForStatement`.
- * @param {string|null} label - A label of the node which was triggered.
+ * @param {string|null} label A label of the node which was triggered.
* @returns {void}
*/
pushLoopContext(type, label) {
@@ -979,7 +955,6 @@ class CodePathState {
/**
* Pops the last context of a loop statement and finalizes it.
- *
* @returns {void}
*/
popLoopContext() {
@@ -1051,8 +1026,7 @@ class CodePathState {
/**
* Makes a code path segment for the test part of a WhileStatement.
- *
- * @param {boolean|undefined} test - The test value (only when constant).
+ * @param {boolean|undefined} test The test value (only when constant).
* @returns {void}
*/
makeWhileTest(test) {
@@ -1068,7 +1042,6 @@ class CodePathState {
/**
* Makes a code path segment for the body part of a WhileStatement.
- *
* @returns {void}
*/
makeWhileBody() {
@@ -1090,7 +1063,6 @@ class CodePathState {
/**
* Makes a code path segment for the body part of a DoWhileStatement.
- *
* @returns {void}
*/
makeDoWhileBody() {
@@ -1105,8 +1077,7 @@ class CodePathState {
/**
* Makes a code path segment for the test part of a DoWhileStatement.
- *
- * @param {boolean|undefined} test - The test value (only when constant).
+ * @param {boolean|undefined} test The test value (only when constant).
* @returns {void}
*/
makeDoWhileTest(test) {
@@ -1126,8 +1097,7 @@ class CodePathState {
/**
* Makes a code path segment for the test part of a ForStatement.
- *
- * @param {boolean|undefined} test - The test value (only when constant).
+ * @param {boolean|undefined} test The test value (only when constant).
* @returns {void}
*/
makeForTest(test) {
@@ -1145,7 +1115,6 @@ class CodePathState {
/**
* Makes a code path segment for the update part of a ForStatement.
- *
* @returns {void}
*/
makeForUpdate() {
@@ -1173,7 +1142,6 @@ class CodePathState {
/**
* Makes a code path segment for the body part of a ForStatement.
- *
* @returns {void}
*/
makeForBody() {
@@ -1227,7 +1195,6 @@ class CodePathState {
/**
* Makes a code path segment for the left part of a ForInStatement and a
* ForOfStatement.
- *
* @returns {void}
*/
makeForInOfLeft() {
@@ -1244,7 +1211,6 @@ class CodePathState {
/**
* Makes a code path segment for the right part of a ForInStatement and a
* ForOfStatement.
- *
* @returns {void}
*/
makeForInOfRight() {
@@ -1263,7 +1229,6 @@ class CodePathState {
/**
* Makes a code path segment for the body part of a ForInStatement and a
* ForOfStatement.
- *
* @returns {void}
*/
makeForInOfBody() {
@@ -1288,10 +1253,9 @@ class CodePathState {
/**
* Creates new context for BreakStatement.
- *
- * @param {boolean} breakable - The flag to indicate it can break by
+ * @param {boolean} breakable The flag to indicate it can break by
* an unlabeled BreakStatement.
- * @param {string|null} label - The label of this context.
+ * @param {string|null} label The label of this context.
* @returns {Object} The new context.
*/
pushBreakContext(breakable, label) {
@@ -1306,7 +1270,6 @@ class CodePathState {
/**
* Removes the top item of the break context stack.
- *
* @returns {Object} The removed context.
*/
popBreakContext() {
@@ -1333,8 +1296,7 @@ class CodePathState {
*
* It registers the head segment to a context of `break`.
* It makes new unreachable segment, then it set the head with the segment.
- *
- * @param {string} label - A label of the break statement.
+ * @param {string} label A label of the break statement.
* @returns {void}
*/
makeBreak(label) {
@@ -1359,8 +1321,7 @@ class CodePathState {
*
* It makes a looping path.
* It makes new unreachable segment, then it set the head with the segment.
- *
- * @param {string} label - A label of the continue statement.
+ * @param {string} label A label of the continue statement.
* @returns {void}
*/
makeContinue(label) {
@@ -1395,7 +1356,6 @@ class CodePathState {
*
* It registers the head segment to a context of `return`.
* It makes new unreachable segment, then it set the head with the segment.
- *
* @returns {void}
*/
makeReturn() {
@@ -1412,7 +1372,6 @@ class CodePathState {
*
* It registers the head segment to a context of `throw`.
* It makes new unreachable segment, then it set the head with the segment.
- *
* @returns {void}
*/
makeThrow() {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path.js
index cb26ea18a3..49b37c6b22 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/code-path.js
@@ -21,10 +21,11 @@ const IdGenerator = require("./id-generator");
*/
class CodePath {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} id - An identifier.
- * @param {CodePath|null} upper - The code path of the upper function scope.
- * @param {Function} onLooped - A callback function to notify looping.
+ * @param {string} id An identifier.
+ * @param {CodePath|null} upper The code path of the upper function scope.
+ * @param {Function} onLooped A callback function to notify looping.
*/
constructor(id, upper, onLooped) {
@@ -62,8 +63,7 @@ class CodePath {
/**
* Gets the state of a given code path.
- *
- * @param {CodePath} codePath - A code path to get.
+ * @param {CodePath} codePath A code path to get.
* @returns {CodePathState} The state of the code path.
*/
static getState(codePath) {
@@ -126,11 +126,10 @@ class CodePath {
*
* - `controller.skip()` - Skip the following segments in this branch.
* - `controller.break()` - Skip all following segments.
- *
- * @param {Object} [options] - Omittable.
- * @param {CodePathSegment} [options.first] - The first segment to traverse.
- * @param {CodePathSegment} [options.last] - The last segment to traverse.
- * @param {Function} callback - A callback function.
+ * @param {Object} [options] Omittable.
+ * @param {CodePathSegment} [options.first] The first segment to traverse.
+ * @param {CodePathSegment} [options.last] The last segment to traverse.
+ * @param {Function} callback A callback function.
* @returns {void}
*/
traverseSegments(options, callback) {
@@ -171,7 +170,7 @@ class CodePath {
/**
* Checks a given previous segment has been visited.
- * @param {CodePathSegment} prevSegment - A previous segment to check.
+ * @param {CodePathSegment} prevSegment A previous segment to check.
* @returns {boolean} `true` if the segment has been visited.
*/
function isVisited(prevSegment) {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js
index 2ca6dbc1e5..35a4cb2dac 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js
@@ -17,7 +17,7 @@ const debug = require("debug")("eslint:code-path");
/**
* Gets id of a given segment.
- * @param {CodePathSegment} segment - A segment to get.
+ * @param {CodePathSegment} segment A segment to get.
* @returns {string} Id of the segment.
*/
/* istanbul ignore next */
@@ -39,18 +39,16 @@ module.exports = {
/**
* Dumps given objects.
- *
- * @param {...any} args - objects to dump.
+ * @param {...any} args objects to dump.
* @returns {void}
*/
dump: debug,
/**
* Dumps the current analyzing state.
- *
- * @param {ASTNode} node - A node to dump.
- * @param {CodePathState} state - A state to dump.
- * @param {boolean} leaving - A flag whether or not it's leaving
+ * @param {ASTNode} node A node to dump.
+ * @param {CodePathState} state A state to dump.
+ * @param {boolean} leaving A flag whether or not it's leaving
* @returns {void}
*/
dumpState: !debug.enabled ? debug : /* istanbul ignore next */ function(node, state, leaving) {
@@ -73,8 +71,7 @@ module.exports = {
/**
* Dumps a DOT code of a given code path.
* The DOT code can be visialized with Graphvis.
- *
- * @param {CodePath} codePath - A code path to dump.
+ * @param {CodePath} codePath A code path to dump.
* @returns {void}
* @see http://www.graphviz.org
* @see http://www.webgraphviz.com
@@ -139,9 +136,8 @@ module.exports = {
/**
* Makes a DOT code of a given code path.
* The DOT code can be visialized with Graphvis.
- *
- * @param {CodePath} codePath - A code path to make DOT.
- * @param {Object} traceMap - Optional. A map to check whether or not segments had been done.
+ * @param {CodePath} codePath A code path to make DOT.
+ * @param {Object} traceMap Optional. A map to check whether or not segments had been done.
* @returns {string} A DOT code of the code path.
*/
makeDotArrows(codePath, traceMap) {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js
index 939ed2d0d9..eb1d2de5a7 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js
@@ -22,8 +22,7 @@ const assert = require("assert"),
/**
* Gets whether or not a given segment is reachable.
- *
- * @param {CodePathSegment} segment - A segment to get.
+ * @param {CodePathSegment} segment A segment to get.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -36,11 +35,10 @@ function isReachable(segment) {
* When `context.segmentsList` is `[[a, b], [c, d], [e, f]]`, `begin` is `0`, and
* `end` is `-1`, this creates `[g, h]`. This `g` is from `a`, `c`, and `e`.
* This `h` is from `b`, `d`, and `f`.
- *
- * @param {ForkContext} context - An instance.
- * @param {number} begin - The first index of the previous segments.
- * @param {number} end - The last index of the previous segments.
- * @param {Function} create - A factory function of new segments.
+ * @param {ForkContext} context An instance.
+ * @param {number} begin The first index of the previous segments.
+ * @param {number} end The last index of the previous segments.
+ * @param {Function} create A factory function of new segments.
* @returns {CodePathSegment[]} New segments.
*/
function makeSegments(context, begin, end, create) {
@@ -69,9 +67,8 @@ function makeSegments(context, begin, end, create) {
* control statement (such as `break`, `continue`) from the `finally` block, the
* destination's segments may be half of the source segments. In that case, this
* merges segments.
- *
- * @param {ForkContext} context - An instance.
- * @param {CodePathSegment[]} segments - Segments to merge.
+ * @param {ForkContext} context An instance.
+ * @param {CodePathSegment[]} segments Segments to merge.
* @returns {CodePathSegment[]} The merged segments.
*/
function mergeExtraSegments(context, segments) {
@@ -100,10 +97,11 @@ function mergeExtraSegments(context, segments) {
*/
class ForkContext {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {IdGenerator} idGenerator - An identifier generator for segments.
- * @param {ForkContext|null} upper - An upper fork context.
- * @param {number} count - A number of parallel segments.
+ * @param {IdGenerator} idGenerator An identifier generator for segments.
+ * @param {ForkContext|null} upper An upper fork context.
+ * @param {number} count A number of parallel segments.
*/
constructor(idGenerator, upper, count) {
this.idGenerator = idGenerator;
@@ -142,9 +140,8 @@ class ForkContext {
/**
* Creates new segments from this context.
- *
- * @param {number} begin - The first index of previous segments.
- * @param {number} end - The last index of previous segments.
+ * @param {number} begin The first index of previous segments.
+ * @param {number} end The last index of previous segments.
* @returns {CodePathSegment[]} New segments.
*/
makeNext(begin, end) {
@@ -154,9 +151,8 @@ class ForkContext {
/**
* Creates new segments from this context.
* The new segments is always unreachable.
- *
- * @param {number} begin - The first index of previous segments.
- * @param {number} end - The last index of previous segments.
+ * @param {number} begin The first index of previous segments.
+ * @param {number} end The last index of previous segments.
* @returns {CodePathSegment[]} New segments.
*/
makeUnreachable(begin, end) {
@@ -167,9 +163,8 @@ class ForkContext {
* Creates new segments from this context.
* The new segments don't have connections for previous segments.
* But these inherit the reachable flag from this context.
- *
- * @param {number} begin - The first index of previous segments.
- * @param {number} end - The last index of previous segments.
+ * @param {number} begin The first index of previous segments.
+ * @param {number} end The last index of previous segments.
* @returns {CodePathSegment[]} New segments.
*/
makeDisconnected(begin, end) {
@@ -179,8 +174,7 @@ class ForkContext {
/**
* Adds segments into this context.
* The added segments become the head.
- *
- * @param {CodePathSegment[]} segments - Segments to add.
+ * @param {CodePathSegment[]} segments Segments to add.
* @returns {void}
*/
add(segments) {
@@ -192,8 +186,7 @@ class ForkContext {
/**
* Replaces the head segments with given segments.
* The current head segments are removed.
- *
- * @param {CodePathSegment[]} segments - Segments to add.
+ * @param {CodePathSegment[]} segments Segments to add.
* @returns {void}
*/
replaceHead(segments) {
@@ -204,8 +197,7 @@ class ForkContext {
/**
* Adds all segments of a given fork context into this context.
- *
- * @param {ForkContext} context - A fork context to add.
+ * @param {ForkContext} context A fork context to add.
* @returns {void}
*/
addAll(context) {
@@ -220,7 +212,6 @@ class ForkContext {
/**
* Clears all secments in this context.
- *
* @returns {void}
*/
clear() {
@@ -229,8 +220,7 @@ class ForkContext {
/**
* Creates the root fork context.
- *
- * @param {IdGenerator} idGenerator - An identifier generator for segments.
+ * @param {IdGenerator} idGenerator An identifier generator for segments.
* @returns {ForkContext} New fork context.
*/
static newRoot(idGenerator) {
@@ -243,9 +233,8 @@ class ForkContext {
/**
* Creates an empty fork context preceded by a given context.
- *
- * @param {ForkContext} parentContext - The parent fork context.
- * @param {boolean} forkLeavingPath - A flag which shows inside of `finally` block.
+ * @param {ForkContext} parentContext The parent fork context.
+ * @param {boolean} forkLeavingPath A flag which shows inside of `finally` block.
* @returns {ForkContext} New fork context.
*/
static newEmpty(parentContext, forkLeavingPath) {
diff --git a/tools/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js b/tools/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js
index 062058ddc1..4cb2e0e3d8 100644
--- a/tools/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js
+++ b/tools/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js
@@ -18,8 +18,9 @@
*/
class IdGenerator {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {string} prefix - Optional. A prefix of generated ids.
+ * @param {string} prefix Optional. A prefix of generated ids.
*/
constructor(prefix) {
this.prefix = String(prefix);
@@ -28,7 +29,6 @@ class IdGenerator {
/**
* Generates id.
- *
* @returns {string} A generated id.
*/
next() {
diff --git a/tools/node_modules/eslint/lib/linter/linter.js b/tools/node_modules/eslint/lib/linter/linter.js
index 534181da9e..6d88cb5aa1 100644
--- a/tools/node_modules/eslint/lib/linter/linter.js
+++ b/tools/node_modules/eslint/lib/linter/linter.js
@@ -292,10 +292,15 @@ function getDirectiveComments(filename, ast, ruleMapper, warnInlineConfig) {
if (!match) {
return;
}
- const lineCommentSupported = /^eslint-disable-(next-)?line$/u.test(match[1]);
+ const directiveText = match[1];
+ const lineCommentSupported = /^eslint-disable-(next-)?line$/u.test(directiveText);
- if (warnInlineConfig && (lineCommentSupported || comment.type === "Block")) {
- const kind = comment.type === "Block" ? `/*${match[1]}*/` : `//${match[1]}`;
+ if (comment.type === "Line" && !lineCommentSupported) {
+ return;
+ }
+
+ if (warnInlineConfig) {
+ const kind = comment.type === "Block" ? `/*${directiveText}*/` : `//${directiveText}`;
problems.push(createLintingProblem({
ruleId: null,
@@ -306,108 +311,101 @@ function getDirectiveComments(filename, ast, ruleMapper, warnInlineConfig) {
return;
}
- const directiveValue = trimmedCommentText.slice(match.index + match[1].length);
- let directiveType = "";
+ if (lineCommentSupported && comment.loc.start.line !== comment.loc.end.line) {
+ const message = `${directiveText} comment should not span multiple lines.`;
- if (lineCommentSupported) {
- if (comment.loc.start.line === comment.loc.end.line) {
- directiveType = match[1].slice("eslint-".length);
- } else {
- const message = `${match[1]} comment should not span multiple lines.`;
+ problems.push(createLintingProblem({
+ ruleId: null,
+ message,
+ loc: comment.loc
+ }));
+ return;
+ }
- problems.push(createLintingProblem({
- ruleId: null,
- message,
- loc: comment.loc
- }));
+ const directiveValue = trimmedCommentText.slice(match.index + directiveText.length);
+
+ switch (directiveText) {
+ case "eslint-disable":
+ case "eslint-enable":
+ case "eslint-disable-next-line":
+ case "eslint-disable-line": {
+ const directiveType = directiveText.slice("eslint-".length);
+ const options = { type: directiveType, loc: comment.loc, value: directiveValue, ruleMapper };
+ const { directives, directiveProblems } = createDisableDirectives(options);
+
+ disableDirectives.push(...directives);
+ problems.push(...directiveProblems);
+ break;
}
- } else if (comment.type === "Block") {
- switch (match[1]) {
- case "exported":
- Object.assign(exportedVariables, commentParser.parseStringConfig(directiveValue, comment));
- break;
- case "globals":
- case "global":
- for (const [id, { value }] of Object.entries(commentParser.parseStringConfig(directiveValue, comment))) {
- let normalizedValue;
+ case "exported":
+ Object.assign(exportedVariables, commentParser.parseStringConfig(directiveValue, comment));
+ break;
+
+ case "globals":
+ case "global":
+ for (const [id, { value }] of Object.entries(commentParser.parseStringConfig(directiveValue, comment))) {
+ let normalizedValue;
+
+ try {
+ normalizedValue = ConfigOps.normalizeConfigGlobal(value);
+ } catch (err) {
+ problems.push(createLintingProblem({
+ ruleId: null,
+ loc: comment.loc,
+ message: err.message
+ }));
+ continue;
+ }
+
+ if (enabledGlobals[id]) {
+ enabledGlobals[id].comments.push(comment);
+ enabledGlobals[id].value = normalizedValue;
+ } else {
+ enabledGlobals[id] = {
+ comments: [comment],
+ value: normalizedValue
+ };
+ }
+ }
+ break;
+
+ case "eslint": {
+ const parseResult = commentParser.parseJsonConfig(directiveValue, comment.loc);
+
+ if (parseResult.success) {
+ Object.keys(parseResult.config).forEach(name => {
+ const rule = ruleMapper(name);
+ const ruleValue = parseResult.config[name];
+
+ if (rule === null) {
+ problems.push(createLintingProblem({ ruleId: name, loc: comment.loc }));
+ return;
+ }
try {
- normalizedValue = ConfigOps.normalizeConfigGlobal(value);
+ validator.validateRuleOptions(rule, name, ruleValue);
} catch (err) {
problems.push(createLintingProblem({
- ruleId: null,
- loc: comment.loc,
- message: err.message
+ ruleId: name,
+ message: err.message,
+ loc: comment.loc
}));
- continue;
- }
- if (enabledGlobals[id]) {
- enabledGlobals[id].comments.push(comment);
- enabledGlobals[id].value = normalizedValue;
- } else {
- enabledGlobals[id] = {
- comments: [comment],
- value: normalizedValue
- };
+ // do not apply the config, if found invalid options.
+ return;
}
- }
- break;
-
- case "eslint-disable":
- directiveType = "disable";
- break;
-
- case "eslint-enable":
- directiveType = "enable";
- break;
-
- case "eslint": {
- const parseResult = commentParser.parseJsonConfig(directiveValue, comment.loc);
-
- if (parseResult.success) {
- Object.keys(parseResult.config).forEach(name => {
- const rule = ruleMapper(name);
- const ruleValue = parseResult.config[name];
-
- if (rule === null) {
- problems.push(createLintingProblem({ ruleId: name, loc: comment.loc }));
- return;
- }
-
- try {
- validator.validateRuleOptions(rule, name, ruleValue);
- } catch (err) {
- problems.push(createLintingProblem({
- ruleId: name,
- message: err.message,
- loc: comment.loc
- }));
-
- // do not apply the config, if found invalid options.
- return;
- }
-
- configuredRules[name] = ruleValue;
- });
- } else {
- problems.push(parseResult.error);
- }
- break;
+ configuredRules[name] = ruleValue;
+ });
+ } else {
+ problems.push(parseResult.error);
}
- // no default
+ break;
}
- }
-
- if (directiveType !== "") {
- const options = { type: directiveType, loc: comment.loc, value: directiveValue, ruleMapper };
- const { directives, directiveProblems } = createDisableDirectives(options);
- disableDirectives.push(...directives);
- problems.push(...directiveProblems);
+ // no default
}
});
@@ -438,7 +436,7 @@ const eslintEnvPattern = /\/\*\s*eslint-env\s(.+?)\*\//gu;
/**
* Checks whether or not there is a comment which has "eslint-env *" in a given text.
- * @param {string} text - A source code text to check.
+ * @param {string} text A source code text to check.
* @returns {Object|null} A result of parseListConfig() with "eslint-env *" comment.
*/
function findEslintEnv(text) {
@@ -555,8 +553,7 @@ function resolveGlobals(providedGlobals, enabledEnvironments) {
/**
* Strips Unicode BOM from a given text.
- *
- * @param {string} text - A text to strip.
+ * @param {string} text A text to strip.
* @returns {string} The stripped text.
*/
function stripUnicodeBOM(text) {
@@ -669,6 +666,8 @@ function parse(text, parser, providedParserOptions, filePath) {
// If the message includes a leading line number, strip it:
const message = `Parsing error: ${ex.message.replace(/^line \d+:/iu, "").trim()}`;
+ debug("%s\n%s", message, ex.stack);
+
return {
success: false,
error: {
@@ -813,9 +812,10 @@ const BASE_TRAVERSAL_CONTEXT = Object.freeze(
* @param {Object} settings The settings that were enabled in the config
* @param {string} filename The reported filename of the code
* @param {boolean} disableFixes If true, it doesn't make `fix` properties.
+ * @param {string | undefined} cwd cwd of the cli
* @returns {Problem[]} An array of reported problems
*/
-function runRules(sourceCode, configuredRules, ruleMapper, parserOptions, parserName, settings, filename, disableFixes) {
+function runRules(sourceCode, configuredRules, ruleMapper, parserOptions, parserName, settings, filename, disableFixes, cwd) {
const emitter = createEmitter();
const nodeQueue = [];
let currentNode = sourceCode.ast;
@@ -842,6 +842,7 @@ function runRules(sourceCode, configuredRules, ruleMapper, parserOptions, parser
{
getAncestors: () => getAncestors(currentNode),
getDeclaredVariables: sourceCode.scopeManager.getDeclaredVariables.bind(sourceCode.scopeManager),
+ getCwd: () => cwd,
getFilename: () => filename,
getScope: () => getScope(sourceCode.scopeManager, currentNode),
getSourceCode: () => sourceCode,
@@ -989,6 +990,24 @@ function getRule(slots, ruleId) {
}
/**
+ * Normalize the value of the cwd
+ * @param {string | undefined} cwd raw value of the cwd, path to a directory that should be considered as the current working directory, can be undefined.
+ * @returns {string | undefined} normalized cwd
+ */
+function normalizeCwd(cwd) {
+ if (cwd) {
+ return cwd;
+ }
+ if (typeof process === "object") {
+ return process.cwd();
+ }
+
+ // It's more explicit to assign the undefined
+ // eslint-disable-next-line no-undefined
+ return undefined;
+}
+
+/**
* The map to store private data.
* @type {WeakMap<Linter, LinterInternalSlots>}
*/
@@ -1004,8 +1023,14 @@ const internalSlotsMap = new WeakMap();
*/
class Linter {
- constructor() {
+ /**
+ * Initialize the Linter.
+ * @param {Object} [config] the config object
+ * @param {string} [config.cwd] path to a directory that should be considered as the current working directory, can be undefined.
+ */
+ constructor({ cwd } = {}) {
internalSlotsMap.set(this, {
+ cwd: normalizeCwd(cwd),
lastConfigArray: null,
lastSourceCode: null,
parserMap: new Map([["espree", espree]]),
@@ -1137,7 +1162,8 @@ class Linter {
parserName,
settings,
options.filename,
- options.disableFixes
+ options.disableFixes,
+ slots.cwd
);
} catch (err) {
err.message += `\nOccurred while linting ${options.filename}`;
diff --git a/tools/node_modules/eslint/lib/linter/node-event-generator.js b/tools/node_modules/eslint/lib/linter/node-event-generator.js
index 1267081d95..fc7b879f64 100644
--- a/tools/node_modules/eslint/lib/linter/node-event-generator.js
+++ b/tools/node_modules/eslint/lib/linter/node-event-generator.js
@@ -202,6 +202,7 @@ const parseSelector = lodash.memoize(rawSelector => {
*/
class NodeEventGenerator {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {SafeEmitter} emitter
* An SafeEmitter which is the destination of events. This emitter must already
@@ -286,7 +287,7 @@ class NodeEventGenerator {
/**
* Emits an event of entering AST node.
- * @param {ASTNode} node - A node which was entered.
+ * @param {ASTNode} node A node which was entered.
* @returns {void}
*/
enterNode(node) {
@@ -298,7 +299,7 @@ class NodeEventGenerator {
/**
* Emits an event of leaving AST node.
- * @param {ASTNode} node - A node which was left.
+ * @param {ASTNode} node A node which was left.
* @returns {void}
*/
leaveNode(node) {
diff --git a/tools/node_modules/eslint/lib/rule-tester/rule-tester.js b/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
index 9f8324a358..e57cd09bd8 100644
--- a/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
+++ b/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
@@ -78,8 +78,7 @@ const hasOwnProperty = Function.call.bind(Object.hasOwnProperty);
/**
* Clones a given value deeply.
* Note: This ignores `parent` property.
- *
- * @param {any} x - A value to clone.
+ * @param {any} x A value to clone.
* @returns {any} A cloned value.
*/
function cloneDeeplyExcludesParent(x) {
@@ -104,8 +103,7 @@ function cloneDeeplyExcludesParent(x) {
/**
* Freezes a given value deeply.
- *
- * @param {any} x - A value to freeze.
+ * @param {any} x A value to freeze.
* @returns {void}
*/
function freezeDeeply(x) {
@@ -146,8 +144,8 @@ const IT = Symbol("it");
/**
* This is `it` default handler if `it` don't exist.
* @this {Mocha}
- * @param {string} text - The description of the test case.
- * @param {Function} method - The logic of the test case.
+ * @param {string} text The description of the test case.
+ * @param {Function} method The logic of the test case.
* @returns {any} Returned value of `method`.
*/
function itDefaultHandler(text, method) {
@@ -164,8 +162,8 @@ function itDefaultHandler(text, method) {
/**
* This is `describe` default handler if `describe` don't exist.
* @this {Mocha}
- * @param {string} text - The description of the test case.
- * @param {Function} method - The logic of the test case.
+ * @param {string} text The description of the test case.
+ * @param {Function} method The logic of the test case.
* @returns {any} Returned value of `method`.
*/
function describeDefaultHandler(text, method) {
diff --git a/tools/node_modules/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js
index a33d1f32f2..3a32db6eac 100644
--- a/tools/node_modules/eslint/lib/rules/accessor-pairs.js
+++ b/tools/node_modules/eslint/lib/rules/accessor-pairs.js
@@ -79,7 +79,7 @@ function areEqualKeys(left, right) {
/**
* Checks whether or not a given node is of an accessor kind ('get' or 'set').
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is of an accessor kind.
*/
function isAccessorKind(node) {
@@ -88,8 +88,8 @@ function isAccessorKind(node) {
/**
* Checks whether or not a given node is an `Identifier` node which was named a given name.
- * @param {ASTNode} node - A node to check.
- * @param {string} name - An expected name of the node.
+ * @param {ASTNode} node A node to check.
+ * @param {string} name An expected name of the node.
* @returns {boolean} `true` if the node is an `Identifier` node which was named as expected.
*/
function isIdentifier(node, name) {
@@ -98,10 +98,10 @@ function isIdentifier(node, name) {
/**
* Checks whether or not a given node is an argument of a specified method call.
- * @param {ASTNode} node - A node to check.
- * @param {number} index - An expected index of the node in arguments.
- * @param {string} object - An expected name of the object of the method.
- * @param {string} property - An expected name of the method.
+ * @param {ASTNode} node A node to check.
+ * @param {number} index An expected index of the node in arguments.
+ * @param {string} object An expected name of the object of the method.
+ * @param {string} property An expected name of the method.
* @returns {boolean} `true` if the node is an argument of the specified method call.
*/
function isArgumentOfMethodCall(node, index, object, property) {
@@ -119,7 +119,7 @@ function isArgumentOfMethodCall(node, index, object, property) {
/**
* Checks whether or not a given node is a property descriptor.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a property descriptor.
*/
function isPropertyDescriptor(node) {
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 f6be2e8dd0..b4b4dd430f 100644
--- a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js
+++ b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js
@@ -65,8 +65,7 @@ module.exports = {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} option - An option value to parse.
+ * @param {string|Object|undefined} option An option value to parse.
* @returns {{multiline: boolean, minItems: number}} Normalized option object.
*/
function normalizeOptionValue(option) {
@@ -97,8 +96,7 @@ module.exports = {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} options - An option value to parse.
+ * @param {string|Object|undefined} options An option value to parse.
* @returns {{ArrayExpression: {multiline: boolean, minItems: number}, ArrayPattern: {multiline: boolean, minItems: number}}} Normalized option object.
*/
function normalizeOptions(options) {
@@ -109,8 +107,8 @@ module.exports = {
/**
* Reports that there shouldn't be a linebreak after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoBeginningLinebreak(node, token) {
@@ -132,8 +130,8 @@ module.exports = {
/**
* Reports that there shouldn't be a linebreak before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoEndingLinebreak(node, token) {
@@ -155,8 +153,8 @@ module.exports = {
/**
* Reports that there should be a linebreak after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredBeginningLinebreak(node, token) {
@@ -172,8 +170,8 @@ module.exports = {
/**
* Reports that there should be a linebreak before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredEndingLinebreak(node, token) {
@@ -189,8 +187,7 @@ module.exports = {
/**
* Reports a given node if it violated this rule.
- *
- * @param {ASTNode} node - A node to check. This is an ArrayExpression node or an ArrayPattern node.
+ * @param {ASTNode} node A node to check. This is an ArrayExpression node or an ArrayPattern node.
* @returns {void}
*/
function check(node) {
@@ -219,7 +216,7 @@ module.exports = {
) ||
(
options.consistent &&
- firstIncComment.loc.start.line !== openBracket.loc.end.line
+ openBracket.loc.end.line !== first.loc.start.line
)
);
diff --git a/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js
index 0a51d350cd..2510159ee4 100644
--- a/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/array-bracket-spacing.js
@@ -59,7 +59,7 @@ module.exports = {
* Determines whether an option is set, relative to the spacing option.
* If spaced is "always", then check whether option is set to false.
* If spaced is "never", then check whether option is set to true.
- * @param {Object} option - The option to exclude.
+ * @param {Object} option The option to exclude.
* @returns {boolean} Whether or not the property is excluded.
*/
function isOptionSet(option) {
@@ -79,8 +79,8 @@ module.exports = {
/**
* Reports that there shouldn't be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoBeginningSpace(node, token) {
@@ -101,8 +101,8 @@ module.exports = {
/**
* Reports that there shouldn't be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoEndingSpace(node, token) {
@@ -123,8 +123,8 @@ module.exports = {
/**
* Reports that there should be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredBeginningSpace(node, token) {
@@ -143,8 +143,8 @@ module.exports = {
/**
* Reports that there should be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredEndingSpace(node, token) {
@@ -163,7 +163,7 @@ module.exports = {
/**
* Determines if a node is an object type
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} Whether or not the node is an object type.
*/
function isObjectType(node) {
@@ -172,7 +172,7 @@ module.exports = {
/**
* Determines if a node is an array type
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} Whether or not the node is an array type.
*/
function isArrayType(node) {
@@ -181,7 +181,7 @@ module.exports = {
/**
* Validates the spacing around array brackets
- * @param {ASTNode} node - The node we're checking for spacing
+ * @param {ASTNode} node The node we're checking for spacing
* @returns {void}
*/
function validateArraySpacing(node) {
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 bd1f3a37aa..d632a3f30c 100644
--- a/tools/node_modules/eslint/lib/rules/array-callback-return.js
+++ b/tools/node_modules/eslint/lib/rules/array-callback-return.js
@@ -22,8 +22,7 @@ const TARGET_METHODS = /^(?:every|filter|find(?:Index)?|map|reduce(?:Right)?|som
/**
* Checks a given code path segment is reachable.
- *
- * @param {CodePathSegment} segment - A segment to check.
+ * @param {CodePathSegment} segment A segment to check.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -35,9 +34,8 @@ function isReachable(segment) {
*
* - FunctionExpression -> the function name or `function` keyword.
* - ArrowFunctionExpression -> `=>` token.
- *
- * @param {ASTNode} node - A function node to get.
- * @param {SourceCode} sourceCode - A source code to get tokens.
+ * @param {ASTNode} node A function node to get.
+ * @param {SourceCode} sourceCode A source code to get tokens.
* @returns {ASTNode|Token} The node or the token of a location.
*/
function getLocation(node, sourceCode) {
@@ -50,8 +48,7 @@ function getLocation(node, sourceCode) {
/**
* Checks a given node is a MemberExpression node which has the specified name's
* property.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a MemberExpression node which has
* the specified name's property
*/
@@ -65,8 +62,7 @@ function isTargetMethod(node) {
/**
* Checks whether or not a given node is a function expression which is the
* callback of an array method.
- *
- * @param {ASTNode} node - A node to check. This is one of
+ * @param {ASTNode} node A node to check. This is one of
* FunctionExpression or ArrowFunctionExpression.
* @returns {boolean} `true` if the node is the callback of an array method.
*/
@@ -188,8 +184,7 @@ module.exports = {
*
* If the last code path segment is reachable, there are paths which are not
* returned or thrown.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function checkLastSegment(node) {
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 c3d026ad69..1da67667be 100644
--- a/tools/node_modules/eslint/lib/rules/array-element-newline.js
+++ b/tools/node_modules/eslint/lib/rules/array-element-newline.js
@@ -62,8 +62,7 @@ module.exports = {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} providedOption - An option value to parse.
+ * @param {string|Object|undefined} providedOption An option value to parse.
* @returns {{multiline: boolean, minItems: number}} Normalized option object.
*/
function normalizeOptionValue(providedOption) {
@@ -90,8 +89,7 @@ module.exports = {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} options - An option value to parse.
+ * @param {string|Object|undefined} options An option value to parse.
* @returns {{ArrayExpression: {multiline: boolean, minItems: number}, ArrayPattern: {multiline: boolean, minItems: number}}} Normalized option object.
*/
function normalizeOptions(options) {
@@ -102,7 +100,7 @@ module.exports = {
/**
* Reports that there shouldn't be a line break after the first token
- * @param {Token} token - The token to use for the report.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoLineBreak(token) {
@@ -151,7 +149,7 @@ module.exports = {
/**
* Reports that there should be a line break after the first token
- * @param {Token} token - The token to use for the report.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredLineBreak(token) {
@@ -171,8 +169,7 @@ module.exports = {
/**
* Reports a given node if it violated this rule.
- *
- * @param {ASTNode} node - A node to check. This is an ObjectExpression node or an ObjectPattern node.
+ * @param {ASTNode} node A node to check. This is an ObjectExpression node or an ObjectPattern node.
* @returns {void}
*/
function check(node) {
diff --git a/tools/node_modules/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js
index b4b26e3534..dc3c382579 100644
--- a/tools/node_modules/eslint/lib/rules/arrow-parens.js
+++ b/tools/node_modules/eslint/lib/rules/arrow-parens.js
@@ -16,7 +16,6 @@ const astUtils = require("./utils/ast-utils");
/**
* Get location should be reported by AST node.
- *
* @param {ASTNode} node AST Node.
* @returns {Location} Location information.
*/
diff --git a/tools/node_modules/eslint/lib/rules/block-scoped-var.js b/tools/node_modules/eslint/lib/rules/block-scoped-var.js
index 053cfc334c..481057ba6c 100644
--- a/tools/node_modules/eslint/lib/rules/block-scoped-var.js
+++ b/tools/node_modules/eslint/lib/rules/block-scoped-var.js
@@ -31,7 +31,7 @@ module.exports = {
/**
* Makes a block scope.
- * @param {ASTNode} node - A node of a scope.
+ * @param {ASTNode} node A node of a scope.
* @returns {void}
*/
function enterScope(node) {
@@ -48,7 +48,7 @@ module.exports = {
/**
* Reports a given reference.
- * @param {eslint-scope.Reference} reference - A reference to report.
+ * @param {eslint-scope.Reference} reference A reference to report.
* @returns {void}
*/
function report(reference) {
@@ -59,7 +59,7 @@ module.exports = {
/**
* Finds and reports references which are outside of valid scopes.
- * @param {ASTNode} node - A node to get variables.
+ * @param {ASTNode} node A node to get variables.
* @returns {void}
*/
function checkForVariables(node) {
diff --git a/tools/node_modules/eslint/lib/rules/block-spacing.js b/tools/node_modules/eslint/lib/rules/block-spacing.js
index e843148e5d..c6ed44a279 100644
--- a/tools/node_modules/eslint/lib/rules/block-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/block-spacing.js
@@ -41,7 +41,7 @@ module.exports = {
/**
* Gets the open brace token from a given node.
- * @param {ASTNode} node - A BlockStatement/SwitchStatement node to get.
+ * @param {ASTNode} node A BlockStatement/SwitchStatement node to get.
* @returns {Token} The token of the open brace.
*/
function getOpenBrace(node) {
@@ -58,8 +58,8 @@ module.exports = {
* Checks whether or not:
* - given tokens are on same line.
* - there is/isn't a space between given tokens.
- * @param {Token} left - A token to check.
- * @param {Token} right - The token which is next to `left`.
+ * @param {Token} left A token to check.
+ * @param {Token} right The token which is next to `left`.
* @returns {boolean}
* When the option is `"always"`, `true` if there are one or more spaces between given tokens.
* When the option is `"never"`, `true` if there are not any spaces between given tokens.
@@ -74,7 +74,7 @@ module.exports = {
/**
* Reports invalid spacing style inside braces.
- * @param {ASTNode} node - A BlockStatement/SwitchStatement node to get.
+ * @param {ASTNode} node A BlockStatement/SwitchStatement node to get.
* @returns {void}
*/
function checkSpacingInsideBraces(node) {
diff --git a/tools/node_modules/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js
index dd7ef14564..d7524b878d 100644
--- a/tools/node_modules/eslint/lib/rules/capitalized-comments.js
+++ b/tools/node_modules/eslint/lib/rules/capitalized-comments.js
@@ -54,7 +54,6 @@ const DEFAULTS = {
* set is returned. Options specified in overrides will take priority
* over options specified in the main options object, which will in
* turn take priority over the rule's defaults.
- *
* @param {Object|string} rawOptions The user-provided options.
* @param {string} which Either "line" or "block".
* @returns {Object} The normalized options.
@@ -65,7 +64,6 @@ function getNormalizedOptions(rawOptions, which) {
/**
* Get normalized options for block and line comments.
- *
* @param {Object|string} rawOptions The user-provided options.
* @returns {Object} An object with "Line" and "Block" keys and corresponding
* normalized options objects.
@@ -82,7 +80,6 @@ function getAllNormalizedOptions(rawOptions = {}) {
* options.
*
* This is done in order to avoid invoking the RegExp constructor repeatedly.
- *
* @param {Object} normalizedOptions The normalized rule options.
* @returns {void}
*/
@@ -162,7 +159,6 @@ module.exports = {
* Also, it follows from this definition that only block comments can
* be considered as possibly inline. This is because line comments
* would consume any following tokens on the same line as the comment.
- *
* @param {ASTNode} comment The comment node to check.
* @returns {boolean} True if the comment is an inline comment, false
* otherwise.
@@ -181,7 +177,6 @@ module.exports = {
/**
* Determine if a comment follows another comment.
- *
* @param {ASTNode} comment The comment to check.
* @returns {boolean} True if the comment follows a valid comment.
*/
@@ -196,7 +191,6 @@ module.exports = {
/**
* Check a comment to determine if it is valid for this rule.
- *
* @param {ASTNode} comment The comment node to process.
* @param {Object} options The options for checking this comment.
* @returns {boolean} True if the comment is valid, false otherwise.
@@ -261,7 +255,6 @@ module.exports = {
/**
* Process a comment to determine if it needs to be reported.
- *
* @param {ASTNode} comment The comment node to process.
* @returns {void}
*/
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 4bf17090ab..2cc5cc4184 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
@@ -61,7 +61,7 @@ module.exports = {
/**
* Check if the node is an instance method
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {boolean} True if its an instance method
* @private
*/
@@ -71,7 +71,7 @@ module.exports = {
/**
* Check if the node is an instance method not excluded by config
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {boolean} True if it is an instance method, and not excluded by config
* @private
*/
@@ -84,7 +84,7 @@ module.exports = {
* Checks if we are leaving a function that is a method, and reports if 'this' has not been used.
* Static methods and the constructor are exempt.
* Then pops the context off the stack.
- * @param {ASTNode} node - A function node that was entered.
+ * @param {ASTNode} node A function node that was entered.
* @returns {void}
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/comma-dangle.js b/tools/node_modules/eslint/lib/rules/comma-dangle.js
index 9cd6660d5d..fb2d167c77 100644
--- a/tools/node_modules/eslint/lib/rules/comma-dangle.js
+++ b/tools/node_modules/eslint/lib/rules/comma-dangle.js
@@ -27,8 +27,7 @@ const DEFAULT_OPTIONS = Object.freeze({
/**
* Checks whether or not a trailing comma is allowed in a given node.
* If the `lastItem` is `RestElement` or `RestProperty`, it disallows trailing commas.
- *
- * @param {ASTNode} lastItem - The node of the last element in the given node.
+ * @param {ASTNode} lastItem The node of the last element in the given node.
* @returns {boolean} `true` if a trailing comma is allowed.
*/
function isTrailingCommaAllowed(lastItem) {
@@ -41,20 +40,18 @@ function isTrailingCommaAllowed(lastItem) {
/**
* Normalize option value.
- *
- * @param {string|Object|undefined} optionValue - The 1st option value to normalize.
+ * @param {string|Object|undefined} optionValue The 1st option value to normalize.
+ * @param {number} ecmaVersion The normalized ECMAScript version.
* @returns {Object} The normalized option value.
*/
-function normalizeOptions(optionValue) {
+function normalizeOptions(optionValue, ecmaVersion) {
if (typeof optionValue === "string") {
return {
arrays: optionValue,
objects: optionValue,
imports: optionValue,
exports: optionValue,
-
- // For backward compatibility, always ignore functions.
- functions: "ignore"
+ functions: (!ecmaVersion || ecmaVersion < 8) ? "ignore" : optionValue
};
}
if (typeof optionValue === "object" && optionValue !== null) {
@@ -137,12 +134,13 @@ module.exports = {
},
create(context) {
- const options = normalizeOptions(context.options[0]);
+ const options = normalizeOptions(context.options[0], context.parserOptions.ecmaVersion);
+
const sourceCode = context.getSourceCode();
/**
* Gets the last item of the given node.
- * @param {ASTNode} node - The node to get.
+ * @param {ASTNode} node The node to get.
* @returns {ASTNode|null} The last node or null.
*/
function getLastItem(node) {
@@ -172,9 +170,8 @@ module.exports = {
* Gets the trailing comma token of the given node.
* If the trailing comma does not exist, this returns the token which is
* the insertion point of the trailing comma token.
- *
- * @param {ASTNode} node - The node to get.
- * @param {ASTNode} lastItem - The last item of the node.
+ * @param {ASTNode} node The node to get.
+ * @param {ASTNode} lastItem The last item of the node.
* @returns {Token} The trailing comma token or the insertion point.
*/
function getTrailingToken(node, lastItem) {
@@ -199,8 +196,7 @@ module.exports = {
* Checks whether or not a given node is multiline.
* This rule handles a given node as multiline when the closing parenthesis
* and the last element are not on the same line.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is multiline.
*/
function isMultiline(node) {
@@ -218,8 +214,7 @@ module.exports = {
/**
* Reports a trailing comma if it exists.
- *
- * @param {ASTNode} node - A node to check. Its type is one of
+ * @param {ASTNode} node A node to check. Its type is one of
* ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,
* ImportDeclaration, and ExportNamedDeclaration.
* @returns {void}
@@ -251,8 +246,7 @@ module.exports = {
*
* If a given node is `ArrayPattern` which has `RestElement`, the trailing
* comma is disallowed, so report if it exists.
- *
- * @param {ASTNode} node - A node to check. Its type is one of
+ * @param {ASTNode} node A node to check. Its type is one of
* ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,
* ImportDeclaration, and ExportNamedDeclaration.
* @returns {void}
@@ -286,8 +280,7 @@ module.exports = {
* If a given node is multiline, reports the last element of a given node
* when it does not have a trailing comma.
* Otherwise, reports a trailing comma if it exists.
- *
- * @param {ASTNode} node - A node to check. Its type is one of
+ * @param {ASTNode} node A node to check. Its type is one of
* ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,
* ImportDeclaration, and ExportNamedDeclaration.
* @returns {void}
@@ -304,8 +297,7 @@ module.exports = {
* Only if a given node is not multiline, reports the last element of a given node
* when it does not have a trailing comma.
* Otherwise, reports a trailing comma if it exists.
- *
- * @param {ASTNode} node - A node to check. Its type is one of
+ * @param {ASTNode} node A node to check. Its type is one of
* ObjectExpression, ObjectPattern, ArrayExpression, ArrayPattern,
* ImportDeclaration, and ExportNamedDeclaration.
* @returns {void}
diff --git a/tools/node_modules/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js
index 79a556a885..73c10a7711 100644
--- a/tools/node_modules/eslint/lib/rules/comma-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/comma-spacing.js
@@ -105,7 +105,7 @@ module.exports = {
/**
* Validates the spacing around a comma token.
- * @param {Object} tokens - The tokens to be validated.
+ * @param {Object} tokens The tokens to be validated.
* @param {Token} tokens.comma The token representing the comma.
* @param {Token} [tokens.left] The last token before the comma.
* @param {Token} [tokens.right] The first token after the comma.
diff --git a/tools/node_modules/eslint/lib/rules/computed-property-spacing.js b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js
index 33f7c9401a..bc8be964f4 100644
--- a/tools/node_modules/eslint/lib/rules/computed-property-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/computed-property-spacing.js
@@ -59,9 +59,9 @@ module.exports = {
/**
* Reports that there shouldn't be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
- * @param {Token} tokenAfter - The token after `token`.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
+ * @param {Token} tokenAfter The token after `token`.
* @returns {void}
*/
function reportNoBeginningSpace(node, token, tokenAfter) {
@@ -80,9 +80,9 @@ module.exports = {
/**
* Reports that there shouldn't be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
- * @param {Token} tokenBefore - The token before `token`.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
+ * @param {Token} tokenBefore The token before `token`.
* @returns {void}
*/
function reportNoEndingSpace(node, token, tokenBefore) {
@@ -101,8 +101,8 @@ module.exports = {
/**
* Reports that there should be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredBeginningSpace(node, token) {
@@ -121,8 +121,8 @@ module.exports = {
/**
* Reports that there should be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredEndingSpace(node, token) {
diff --git a/tools/node_modules/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js
index 16f0070bc7..22667fa470 100644
--- a/tools/node_modules/eslint/lib/rules/consistent-return.js
+++ b/tools/node_modules/eslint/lib/rules/consistent-return.js
@@ -18,8 +18,8 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a given node is an `Identifier` node which was named a given name.
- * @param {ASTNode} node - A node to check.
- * @param {string} name - An expected name of the node.
+ * @param {ASTNode} node A node to check.
+ * @param {string} name An expected name of the node.
* @returns {boolean} `true` if the node is an `Identifier` node which was named as expected.
*/
function isIdentifier(node, name) {
@@ -28,7 +28,7 @@ function isIdentifier(node, name) {
/**
* Checks whether or not a given code path segment is unreachable.
- * @param {CodePathSegment} segment - A CodePathSegment to check.
+ * @param {CodePathSegment} segment A CodePathSegment to check.
* @returns {boolean} `true` if the segment is unreachable.
*/
function isUnreachable(segment) {
@@ -88,8 +88,7 @@ module.exports = {
/**
* Checks whether of not the implicit returning is consistent if the last
* code path segment is reachable.
- *
- * @param {ASTNode} node - A program/function node to check.
+ * @param {ASTNode} node A program/function node to check.
* @returns {void}
*/
function checkLastSegment(node) {
diff --git a/tools/node_modules/eslint/lib/rules/consistent-this.js b/tools/node_modules/eslint/lib/rules/consistent-this.js
index 4bdcdfdc10..16f53b5374 100644
--- a/tools/node_modules/eslint/lib/rules/consistent-this.js
+++ b/tools/node_modules/eslint/lib/rules/consistent-this.js
@@ -46,8 +46,8 @@ module.exports = {
/**
* Reports that a variable declarator or assignment expression is assigning
* a non-'this' value to the specified alias.
- * @param {ASTNode} node - The assigning node.
- * @param {string} name - the name of the alias that was incorrectly used.
+ * @param {ASTNode} node The assigning node.
+ * @param {string} name the name of the alias that was incorrectly used.
* @returns {void}
*/
function reportBadAssignment(node, name) {
@@ -57,9 +57,9 @@ module.exports = {
/**
* Checks that an assignment to an identifier only assigns 'this' to the
* appropriate alias, and the alias is only assigned to 'this'.
- * @param {ASTNode} node - The assigning node.
- * @param {Identifier} name - The name of the variable assigned to.
- * @param {Expression} value - The value of the assignment.
+ * @param {ASTNode} node The assigning node.
+ * @param {Identifier} name The name of the variable assigned to.
+ * @param {Expression} value The value of the assignment.
* @returns {void}
*/
function checkAssignment(node, name, value) {
diff --git a/tools/node_modules/eslint/lib/rules/constructor-super.js b/tools/node_modules/eslint/lib/rules/constructor-super.js
index e4cdb099b3..5a848f210c 100644
--- a/tools/node_modules/eslint/lib/rules/constructor-super.js
+++ b/tools/node_modules/eslint/lib/rules/constructor-super.js
@@ -11,8 +11,7 @@
/**
* Checks whether a given code path segment is reachable or not.
- *
- * @param {CodePathSegment} segment - A code path segment to check.
+ * @param {CodePathSegment} segment A code path segment to check.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -21,7 +20,7 @@ function isReachable(segment) {
/**
* Checks whether or not a given node is a constructor.
- * @param {ASTNode} node - A node to check. This node type is one of
+ * @param {ASTNode} node A node to check. This node type is one of
* `Program`, `FunctionDeclaration`, `FunctionExpression`, and
* `ArrowFunctionExpression`.
* @returns {boolean} `true` if the node is a constructor.
@@ -36,8 +35,7 @@ function isConstructorFunction(node) {
/**
* Checks whether a given node can be a constructor or not.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node can be a constructor.
*/
function isPossibleConstructor(node) {
@@ -137,7 +135,7 @@ module.exports = {
/**
* Gets the flag which shows `super()` is called in some paths.
- * @param {CodePathSegment} segment - A code path segment to get.
+ * @param {CodePathSegment} segment A code path segment to get.
* @returns {boolean} The flag which shows `super()` is called in some paths
*/
function isCalledInSomePath(segment) {
@@ -146,7 +144,7 @@ module.exports = {
/**
* Gets the flag which shows `super()` is called in all paths.
- * @param {CodePathSegment} segment - A code path segment to get.
+ * @param {CodePathSegment} segment A code path segment to get.
* @returns {boolean} The flag which shows `super()` is called in all paths.
*/
function isCalledInEveryPath(segment) {
@@ -168,8 +166,8 @@ module.exports = {
/**
* Stacks a constructor information.
- * @param {CodePath} codePath - A code path which was started.
- * @param {ASTNode} node - The current node.
+ * @param {CodePath} codePath A code path which was started.
+ * @param {ASTNode} node The current node.
* @returns {void}
*/
onCodePathStart(codePath, node) {
@@ -200,8 +198,8 @@ module.exports = {
/**
* Pops a constructor information.
* And reports if `super()` lacked.
- * @param {CodePath} codePath - A code path which was ended.
- * @param {ASTNode} node - The current node.
+ * @param {CodePath} codePath A code path which was ended.
+ * @param {ASTNode} node The current node.
* @returns {void}
*/
onCodePathEnd(codePath, node) {
@@ -231,7 +229,7 @@ module.exports = {
/**
* Initialize information of a given code path segment.
- * @param {CodePathSegment} segment - A code path segment to initialize.
+ * @param {CodePathSegment} segment A code path segment to initialize.
* @returns {void}
*/
onCodePathSegmentStart(segment) {
@@ -258,9 +256,9 @@ module.exports = {
/**
* Update information of the code path segment when a code path was
* looped.
- * @param {CodePathSegment} fromSegment - The code path segment of the
+ * @param {CodePathSegment} fromSegment The code path segment of the
* end of a loop.
- * @param {CodePathSegment} toSegment - A code path segment of the head
+ * @param {CodePathSegment} toSegment A code path segment of the head
* of a loop.
* @returns {void}
*/
@@ -303,7 +301,7 @@ module.exports = {
/**
* Checks for a call of `super()`.
- * @param {ASTNode} node - A CallExpression node to check.
+ * @param {ASTNode} node A CallExpression node to check.
* @returns {void}
*/
"CallExpression:exit"(node) {
@@ -358,7 +356,7 @@ module.exports = {
/**
* Set the mark to the returned path as `super()` was called.
- * @param {ASTNode} node - A ReturnStatement node to check.
+ * @param {ASTNode} node A ReturnStatement node to check.
* @returns {void}
*/
ReturnStatement(node) {
diff --git a/tools/node_modules/eslint/lib/rules/curly.js b/tools/node_modules/eslint/lib/rules/curly.js
index 8eaaddc25c..93c74d11fc 100644
--- a/tools/node_modules/eslint/lib/rules/curly.js
+++ b/tools/node_modules/eslint/lib/rules/curly.js
@@ -119,8 +119,7 @@ module.exports = {
/**
* Checks if the given token is an `else` token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is an `else` token.
*/
function isElseKeywordToken(token) {
@@ -129,7 +128,7 @@ module.exports = {
/**
* Gets the `else` keyword token of a given `IfStatement` node.
- * @param {ASTNode} node - A `IfStatement` node to get.
+ * @param {ASTNode} node A `IfStatement` node to get.
* @returns {Token} The `else` keyword token.
*/
function getElseKeyword(node) {
@@ -143,8 +142,7 @@ module.exports = {
* 1. The given node has the `alternate` node.
* 2. There is a `IfStatement` which doesn't have `alternate` node in the
* trailing statement chain of the `consequent` node.
- *
- * @param {ASTNode} node - A IfStatement node to check.
+ * @param {ASTNode} node A IfStatement node to check.
* @returns {boolean} `true` if the node requires braces of the consequent chunk.
*/
function requiresBraceOfConsequent(node) {
diff --git a/tools/node_modules/eslint/lib/rules/default-param-last.js b/tools/node_modules/eslint/lib/rules/default-param-last.js
index ee73aaf321..12e0b5950d 100644
--- a/tools/node_modules/eslint/lib/rules/default-param-last.js
+++ b/tools/node_modules/eslint/lib/rules/default-param-last.js
@@ -25,6 +25,7 @@ module.exports = {
create(context) {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {ASTNode} node function node
* @returns {void}
diff --git a/tools/node_modules/eslint/lib/rules/dot-location.js b/tools/node_modules/eslint/lib/rules/dot-location.js
index c2e734a1a0..d483e217a9 100644
--- a/tools/node_modules/eslint/lib/rules/dot-location.js
+++ b/tools/node_modules/eslint/lib/rules/dot-location.js
@@ -47,19 +47,18 @@ module.exports = {
/**
* Reports if the dot between object and property is on the correct loccation.
- * @param {ASTNode} obj The object owning the property.
- * @param {ASTNode} prop The property of the object.
- * @param {ASTNode} node The corresponding node of the token.
+ * @param {ASTNode} node The `MemberExpression` node.
* @returns {void}
*/
- function checkDotLocation(obj, prop, node) {
- const dot = sourceCode.getTokenBefore(prop);
+ function checkDotLocation(node) {
+ const property = node.property;
+ const dot = sourceCode.getTokenBefore(property);
// `obj` expression can be parenthesized, but those paren tokens are not a part of the `obj` node.
const tokenBeforeDot = sourceCode.getTokenBefore(dot);
const textBeforeDot = sourceCode.getText().slice(tokenBeforeDot.range[1], dot.range[0]);
- const textAfterDot = sourceCode.getText().slice(dot.range[1], prop.range[0]);
+ const textAfterDot = sourceCode.getText().slice(dot.range[1], property.range[0]);
if (onObject) {
if (!astUtils.isTokenOnSameLine(tokenBeforeDot, dot)) {
@@ -67,17 +66,17 @@ module.exports = {
context.report({
node,
- loc: dot.loc.start,
+ loc: dot.loc,
messageId: "expectedDotAfterObject",
- fix: fixer => fixer.replaceTextRange([tokenBeforeDot.range[1], prop.range[0]], `${neededTextAfterToken}.${textBeforeDot}${textAfterDot}`)
+ fix: fixer => fixer.replaceTextRange([tokenBeforeDot.range[1], property.range[0]], `${neededTextAfterToken}.${textBeforeDot}${textAfterDot}`)
});
}
- } else if (!astUtils.isTokenOnSameLine(dot, prop)) {
+ } else if (!astUtils.isTokenOnSameLine(dot, property)) {
context.report({
node,
- loc: dot.loc.start,
+ loc: dot.loc,
messageId: "expectedDotBeforeProperty",
- fix: fixer => fixer.replaceTextRange([tokenBeforeDot.range[1], prop.range[0]], `${textBeforeDot}${textAfterDot}.`)
+ fix: fixer => fixer.replaceTextRange([tokenBeforeDot.range[1], property.range[0]], `${textBeforeDot}${textAfterDot}.`)
});
}
}
@@ -89,7 +88,7 @@ module.exports = {
*/
function checkNode(node) {
if (!node.computed) {
- checkDotLocation(node.object, node.property, node);
+ checkDotLocation(node);
}
}
diff --git a/tools/node_modules/eslint/lib/rules/func-names.js b/tools/node_modules/eslint/lib/rules/func-names.js
index ff3a1f4b5b..1341d03630 100644
--- a/tools/node_modules/eslint/lib/rules/func-names.js
+++ b/tools/node_modules/eslint/lib/rules/func-names.js
@@ -13,7 +13,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a given variable is a function name.
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is a function name.
*/
function isFunctionName(variable) {
@@ -73,7 +73,7 @@ module.exports = {
/**
* Returns the config option for the given node.
- * @param {ASTNode} node - A node to get the config for.
+ * @param {ASTNode} node A node to get the config for.
* @returns {string} The config option.
*/
function getConfigForNode(node) {
@@ -91,7 +91,7 @@ module.exports = {
/**
* Determines whether the current FunctionExpression node is a get, set, or
* shorthand method in an object literal or a class.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} True if the node is a get, set, or shorthand method.
*/
function isObjectOrClassMethod(node) {
@@ -109,7 +109,7 @@ module.exports = {
/**
* Determines whether the current FunctionExpression node has a name that would be
* inferred from context in a conforming ES6 environment.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} True if the node would have a name assigned automatically.
*/
function hasInferredName(node) {
@@ -125,7 +125,7 @@ module.exports = {
/**
* Reports that an unnamed function should be named
- * @param {ASTNode} node - The node to report in the event of an error.
+ * @param {ASTNode} node The node to report in the event of an error.
* @returns {void}
*/
function reportUnexpectedUnnamedFunction(node) {
@@ -139,7 +139,7 @@ module.exports = {
/**
* Reports that a named function should be unnamed
- * @param {ASTNode} node - The node to report in the event of an error.
+ * @param {ASTNode} node The node to report in the event of an error.
* @returns {void}
*/
function reportUnexpectedNamedFunction(node) {
diff --git a/tools/node_modules/eslint/lib/rules/function-call-argument-newline.js b/tools/node_modules/eslint/lib/rules/function-call-argument-newline.js
index 8bf31f7c71..31ebc097c4 100644
--- a/tools/node_modules/eslint/lib/rules/function-call-argument-newline.js
+++ b/tools/node_modules/eslint/lib/rules/function-call-argument-newline.js
@@ -40,13 +40,13 @@ module.exports = {
const checkers = {
unexpected: {
messageId: "unexpectedLineBreak",
- check: (prevToken, currentToken) => prevToken.loc.start.line !== currentToken.loc.start.line,
+ check: (prevToken, currentToken) => prevToken.loc.end.line !== currentToken.loc.start.line,
createFix: (token, tokenBefore) => fixer =>
fixer.replaceTextRange([tokenBefore.range[1], token.range[0]], " ")
},
missing: {
messageId: "missingLineBreak",
- check: (prevToken, currentToken) => prevToken.loc.start.line === currentToken.loc.start.line,
+ check: (prevToken, currentToken) => prevToken.loc.end.line === currentToken.loc.start.line,
createFix: (token, tokenBefore) => fixer =>
fixer.replaceTextRange([tokenBefore.range[1], token.range[0]], "\n")
}
@@ -61,7 +61,7 @@ module.exports = {
*/
function checkArguments(node, checker) {
for (let i = 1; i < node.arguments.length; i++) {
- const prevArgToken = sourceCode.getFirstToken(node.arguments[i - 1]);
+ const prevArgToken = sourceCode.getLastToken(node.arguments[i - 1]);
const currentArgToken = sourceCode.getFirstToken(node.arguments[i]);
if (checker.check(prevArgToken, currentArgToken)) {
@@ -101,10 +101,10 @@ module.exports = {
} else if (option === "always") {
checkArguments(node, checkers.missing);
} else if (option === "consistent") {
- const firstArgToken = sourceCode.getFirstToken(node.arguments[0]);
+ const firstArgToken = sourceCode.getLastToken(node.arguments[0]);
const secondArgToken = sourceCode.getFirstToken(node.arguments[1]);
- if (firstArgToken.loc.start.line === secondArgToken.loc.start.line) {
+ if (firstArgToken.loc.end.line === secondArgToken.loc.start.line) {
checkArguments(node, checkers.unexpected);
} else {
checkArguments(node, checkers.missing);
diff --git a/tools/node_modules/eslint/lib/rules/generator-star-spacing.js b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js
index 6f860290ce..65534f727f 100644
--- a/tools/node_modules/eslint/lib/rules/generator-star-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/generator-star-spacing.js
@@ -78,9 +78,8 @@ module.exports = {
/**
* Returns resolved option definitions based on an option and defaults
- *
- * @param {any} option - The option object or string value
- * @param {Object} defaults - The defaults to use if options are not present
+ * @param {any} option The option object or string value
+ * @param {Object} defaults The defaults to use if options are not present
* @returns {Object} the resolved object definition
*/
function optionToDefinition(option, defaults) {
@@ -107,8 +106,7 @@ module.exports = {
/**
* Checks if the given token is a star token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a star token.
*/
function isStarToken(token) {
@@ -117,8 +115,7 @@ module.exports = {
/**
* Gets the generator star token of the given function node.
- *
- * @param {ASTNode} node - The function node to get.
+ * @param {ASTNode} node The function node to get.
* @returns {Token} Found star token.
*/
function getStarToken(node) {
@@ -139,7 +136,6 @@ module.exports = {
/**
* Checks the spacing between two tokens before or after the star token.
- *
* @param {string} kind Either "named", "anonymous", or "method"
* @param {string} side Either "before" or "after".
* @param {Token} leftToken `function` keyword token if side is "before", or
@@ -173,7 +169,6 @@ module.exports = {
/**
* Enforces the spacing around the star if node is a generator function.
- *
* @param {ASTNode} node A function expression or declaration node.
* @returns {void}
*/
diff --git a/tools/node_modules/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js
index 6549555646..e1468a5b19 100644
--- a/tools/node_modules/eslint/lib/rules/getter-return.js
+++ b/tools/node_modules/eslint/lib/rules/getter-return.js
@@ -18,8 +18,7 @@ const TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/u;
/**
* Checks a given code path segment is reachable.
- *
- * @param {CodePathSegment} segment - A segment to check.
+ * @param {CodePathSegment} segment A segment to check.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -30,8 +29,7 @@ function isReachable(segment) {
* Gets a readable location.
*
* - FunctionExpression -> the function name or `function` keyword.
- *
- * @param {ASTNode} node - A function node to get.
+ * @param {ASTNode} node A function node to get.
* @returns {ASTNode|Token} The node or the token of a location.
*/
function getId(node) {
@@ -92,8 +90,7 @@ module.exports = {
*
* If the last code path segment is reachable, there are paths which are not
* returned or thrown.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function checkLastSegment(node) {
@@ -113,7 +110,7 @@ module.exports = {
/**
* Checks whether a node means a getter function.
- * @param {ASTNode} node - a node to check.
+ * @param {ASTNode} node a node to check.
* @returns {boolean} if node means a getter, return true; else return false.
*/
function isGetter(node) {
diff --git a/tools/node_modules/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js
index a2fa9c4f40..94c83692b3 100644
--- a/tools/node_modules/eslint/lib/rules/indent.js
+++ b/tools/node_modules/eslint/lib/rules/indent.js
@@ -187,6 +187,7 @@ class BinarySearchTree {
*/
class TokenInfo {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {SourceCode} sourceCode A SourceCode object
*/
@@ -236,6 +237,7 @@ class TokenInfo {
*/
class OffsetStorage {
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {TokenInfo} tokenInfo a TokenInfo instance
* @param {number} indentSize The desired size of each indentation level
@@ -329,7 +331,6 @@ class OffsetStorage {
* Instead, the correct way would be to offset `baz` by 1 level from `bar`, offset `bar` by 1 level from the `)`, and
* offset the `)` by 0 levels from `foo`. This ensures that the offset between `bar` and the `)` are correctly collapsed
* in the second case.
- *
* @param {Token} token The token
* @param {Token} fromToken The token that `token` should be offset from
* @param {number} offset The desired indent level
@@ -358,7 +359,6 @@ class OffsetStorage {
*
* The `setDesiredOffsets` methods inserts ranges like the ones above. The third line above would be inserted by using:
* `setDesiredOffsets([30, 43], fooToken, 1);`
- *
* @param {[number, number]} range A [start, end] pair. All tokens with range[0] <= token.start < range[1] will have the offset applied.
* @param {Token} fromToken The token that this is offset from
* @param {number} offset The desired indent level
diff --git a/tools/node_modules/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js
index 65197358e6..6cfdf92c90 100644
--- a/tools/node_modules/eslint/lib/rules/init-declarations.js
+++ b/tools/node_modules/eslint/lib/rules/init-declarations.js
@@ -11,7 +11,7 @@
/**
* Checks whether or not a given node is a for loop.
- * @param {ASTNode} block - A node to check.
+ * @param {ASTNode} block A node to check.
* @returns {boolean} `true` when the node is a for loop.
*/
function isForLoop(block) {
@@ -22,7 +22,7 @@ function isForLoop(block) {
/**
* Checks whether or not a given declarator node has its initializer.
- * @param {ASTNode} node - A declarator node to check.
+ * @param {ASTNode} node A declarator node to check.
* @returns {boolean} `true` when the node has its initializer.
*/
function isInitialized(node) {
diff --git a/tools/node_modules/eslint/lib/rules/jsx-quotes.js b/tools/node_modules/eslint/lib/rules/jsx-quotes.js
index e6764b2e81..3b282df2f0 100644
--- a/tools/node_modules/eslint/lib/rules/jsx-quotes.js
+++ b/tools/node_modules/eslint/lib/rules/jsx-quotes.js
@@ -65,7 +65,7 @@ module.exports = {
/**
* Checks if the given string literal node uses the expected quotes
- * @param {ASTNode} node - A string literal node.
+ * @param {ASTNode} node A string literal node.
* @returns {boolean} Whether or not the string literal used the expected quotes.
* @public
*/
diff --git a/tools/node_modules/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js
index a1bf991042..2b3fef33bd 100644
--- a/tools/node_modules/eslint/lib/rules/keyword-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/keyword-spacing.js
@@ -41,8 +41,7 @@ const KEYS = keywords.concat(["as", "async", "await", "from", "get", "let", "of"
/**
* Checks whether or not a given token is a "Template" token ends with "${".
- *
- * @param {Token} token - A token to check.
+ * @param {Token} token A token to check.
* @returns {boolean} `true` if the token is a "Template" token ends with "${".
*/
function isOpenParenOfTemplate(token) {
@@ -51,8 +50,7 @@ function isOpenParenOfTemplate(token) {
/**
* Checks whether or not a given token is a "Template" token starts with "}".
- *
- * @param {Token} token - A token to check.
+ * @param {Token} token A token to check.
* @returns {boolean} `true` if the token is a "Template" token starts with "}".
*/
function isCloseParenOfTemplate(token) {
@@ -88,8 +86,8 @@ module.exports = {
retv[key] = {
type: "object",
properties: {
- before: { type: "boolean", default: true },
- after: { type: "boolean", default: true }
+ before: { type: "boolean" },
+ after: { type: "boolean" }
},
additionalProperties: false
};
@@ -114,9 +112,8 @@ module.exports = {
/**
* Reports a given token if there are not space(s) before the token.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp} pattern - A pattern of the previous token to check.
+ * @param {Token} token A token to report.
+ * @param {RegExp} pattern A pattern of the previous token to check.
* @returns {void}
*/
function expectSpaceBefore(token, pattern) {
@@ -141,9 +138,8 @@ module.exports = {
/**
* Reports a given token if there are space(s) before the token.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp} pattern - A pattern of the previous token to check.
+ * @param {Token} token A token to report.
+ * @param {RegExp} pattern A pattern of the previous token to check.
* @returns {void}
*/
function unexpectSpaceBefore(token, pattern) {
@@ -168,9 +164,8 @@ module.exports = {
/**
* Reports a given token if there are not space(s) after the token.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp} pattern - A pattern of the next token to check.
+ * @param {Token} token A token to report.
+ * @param {RegExp} pattern A pattern of the next token to check.
* @returns {void}
*/
function expectSpaceAfter(token, pattern) {
@@ -195,9 +190,8 @@ module.exports = {
/**
* Reports a given token if there are space(s) after the token.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp} pattern - A pattern of the next token to check.
+ * @param {Token} token A token to report.
+ * @param {RegExp} pattern A pattern of the next token to check.
* @returns {void}
*/
function unexpectSpaceAfter(token, pattern) {
@@ -222,8 +216,7 @@ module.exports = {
/**
* Parses the option object and determines check methods for each keyword.
- *
- * @param {Object|undefined} options - The option object to parse.
+ * @param {Object|undefined} options The option object to parse.
* @returns {Object} - Normalized option object.
* Keys are keywords (there are for every keyword).
* Values are instances of `{"before": function, "after": function}`.
@@ -263,9 +256,8 @@ module.exports = {
/**
* Reports a given token if usage of spacing followed by the token is
* invalid.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp|undefined} pattern - Optional. A pattern of the previous
+ * @param {Token} token A token to report.
+ * @param {RegExp} [pattern] Optional. A pattern of the previous
* token to check.
* @returns {void}
*/
@@ -276,9 +268,8 @@ module.exports = {
/**
* Reports a given token if usage of spacing preceded by the token is
* invalid.
- *
- * @param {Token} token - A token to report.
- * @param {RegExp|undefined} pattern - Optional. A pattern of the next
+ * @param {Token} token A token to report.
+ * @param {RegExp} [pattern] Optional. A pattern of the next
* token to check.
* @returns {void}
*/
@@ -288,8 +279,7 @@ module.exports = {
/**
* Reports a given token if usage of spacing around the token is invalid.
- *
- * @param {Token} token - A token to report.
+ * @param {Token} token A token to report.
* @returns {void}
*/
function checkSpacingAround(token) {
@@ -300,8 +290,7 @@ module.exports = {
/**
* Reports the first token of a given node if the first token is a keyword
* and usage of spacing around the token is invalid.
- *
- * @param {ASTNode|null} node - A node to report.
+ * @param {ASTNode|null} node A node to report.
* @returns {void}
*/
function checkSpacingAroundFirstToken(node) {
@@ -318,8 +307,7 @@ module.exports = {
*
* This is used for unary operators (e.g. `typeof`), `function`, and `super`.
* Other rules are handling usage of spacing preceded by those keywords.
- *
- * @param {ASTNode|null} node - A node to report.
+ * @param {ASTNode|null} node A node to report.
* @returns {void}
*/
function checkSpacingBeforeFirstToken(node) {
@@ -333,8 +321,7 @@ module.exports = {
/**
* Reports the previous token of a given node if the token is a keyword and
* usage of spacing around the token is invalid.
- *
- * @param {ASTNode|null} node - A node to report.
+ * @param {ASTNode|null} node A node to report.
* @returns {void}
*/
function checkSpacingAroundTokenBefore(node) {
@@ -348,8 +335,7 @@ module.exports = {
/**
* Reports `async` or `function` keywords of a given node if usage of
* spacing around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForFunction(node) {
@@ -366,8 +352,7 @@ module.exports = {
/**
* Reports `class` and `extends` keywords of a given node if usage of
* spacing around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForClass(node) {
@@ -378,8 +363,7 @@ module.exports = {
/**
* Reports `if` and `else` keywords of a given node if usage of spacing
* around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForIfStatement(node) {
@@ -390,8 +374,7 @@ module.exports = {
/**
* Reports `try`, `catch`, and `finally` keywords of a given node if usage
* of spacing around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForTryStatement(node) {
@@ -403,8 +386,7 @@ module.exports = {
/**
* Reports `do` and `while` keywords of a given node if usage of spacing
* around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForDoWhileStatement(node) {
@@ -415,8 +397,7 @@ module.exports = {
/**
* Reports `for` and `in` keywords of a given node if usage of spacing
* around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForForInStatement(node) {
@@ -427,8 +408,7 @@ module.exports = {
/**
* Reports `for` and `of` keywords of a given node if usage of spacing
* around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForForOfStatement(node) {
@@ -449,8 +429,7 @@ module.exports = {
*
* import*as A from "./a"; /*error Expected space(s) after "import".
* error Expected space(s) before "as".
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForModuleDeclaration(node) {
@@ -474,8 +453,7 @@ module.exports = {
/**
* Reports `as` keyword of a given node if usage of spacing around this
* keyword is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForImportNamespaceSpecifier(node) {
@@ -487,8 +465,7 @@ module.exports = {
/**
* Reports `static`, `get`, and `set` keywords of a given node if usage of
* spacing around those keywords is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForProperty(node) {
@@ -528,8 +505,7 @@ module.exports = {
/**
* Reports `await` keyword of a given node if usage of spacing before
* this keyword is invalid.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function checkSpacingForAwaitExpression(node) {
diff --git a/tools/node_modules/eslint/lib/rules/lines-around-directive.js b/tools/node_modules/eslint/lib/rules/lines-around-directive.js
index 39686d9891..fb439dad6a 100644
--- a/tools/node_modules/eslint/lib/rules/lines-around-directive.js
+++ b/tools/node_modules/eslint/lib/rules/lines-around-directive.js
@@ -131,7 +131,7 @@ module.exports = {
/**
* Check lines around directives in node
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {void}
*/
function checkDirectives(node) {
diff --git a/tools/node_modules/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js
index 45b02f3511..b29099ed4c 100644
--- a/tools/node_modules/eslint/lib/rules/max-len.js
+++ b/tools/node_modules/eslint/lib/rules/max-len.js
@@ -198,7 +198,6 @@ module.exports = {
/**
* Ensure that an array exists at [key] on `object`, and add `value` to it.
- *
* @param {Object} object the object to mutate
* @param {string} key the object's key
* @param {*} value the value to add
@@ -214,7 +213,6 @@ module.exports = {
/**
* Retrieves an array containing all strings (" or ') in the source code.
- *
* @returns {ASTNode[]} An array of string nodes.
*/
function getAllStrings() {
@@ -224,7 +222,6 @@ module.exports = {
/**
* Retrieves an array containing all template literals in the source code.
- *
* @returns {ASTNode[]} An array of template literal nodes.
*/
function getAllTemplateLiterals() {
@@ -234,7 +231,6 @@ module.exports = {
/**
* Retrieves an array containing all RegExp literals in the source code.
- *
* @returns {ASTNode[]} An array of RegExp literal nodes.
*/
function getAllRegExpLiterals() {
@@ -244,7 +240,6 @@ module.exports = {
/**
* A reducer to group an AST node by line number, both start and end.
- *
* @param {Object} acc the accumulator
* @param {ASTNode} node the AST node in question
* @returns {Object} the modified accumulator
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 e9212001a3..5407cff3c5 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
@@ -61,7 +61,6 @@ module.exports = {
/**
* Reports with the first extra statement, and clears it.
- *
* @returns {void}
*/
function reportFirstExtraStatementAndClear() {
@@ -81,8 +80,7 @@ module.exports = {
/**
* Gets the actual last token of a given node.
- *
- * @param {ASTNode} node - A node to get. This is a node except EmptyStatement.
+ * @param {ASTNode} node A node to get. This is a node except EmptyStatement.
* @returns {Token} The actual last token.
*/
function getActualLastToken(node) {
@@ -92,8 +90,7 @@ module.exports = {
/**
* Addresses a given node.
* It updates the state of this rule, then reports the node if the node violated this rule.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function enterStatement(node) {
@@ -127,8 +124,7 @@ module.exports = {
/**
* Updates the state of this rule with the end line of leaving node to check with the next statement.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function leaveStatement(node) {
diff --git a/tools/node_modules/eslint/lib/rules/multiline-ternary.js b/tools/node_modules/eslint/lib/rules/multiline-ternary.js
index 3b98d0b3cf..1df90b6feb 100644
--- a/tools/node_modules/eslint/lib/rules/multiline-ternary.js
+++ b/tools/node_modules/eslint/lib/rules/multiline-ternary.js
@@ -46,9 +46,9 @@ module.exports = {
/**
* Tests whether node is preceded by supplied tokens
- * @param {ASTNode} node - node to check
- * @param {ASTNode} parentNode - parent of node to report
- * @param {boolean} expected - whether newline was expected or not
+ * @param {ASTNode} node node to check
+ * @param {ASTNode} parentNode parent of node to report
+ * @param {boolean} expected whether newline was expected or not
* @returns {void}
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/newline-after-var.js b/tools/node_modules/eslint/lib/rules/newline-after-var.js
index 8f244149c5..4809d9bfc5 100644
--- a/tools/node_modules/eslint/lib/rules/newline-after-var.js
+++ b/tools/node_modules/eslint/lib/rules/newline-after-var.js
@@ -72,8 +72,7 @@ module.exports = {
* var foo = 1
*
* ;(a || b).doSomething()
- *
- * @param {ASTNode} node - The node to get.
+ * @param {ASTNode} node The node to get.
* @returns {Token} The token to compare line to the next statement.
*/
function getLastToken(node) {
@@ -93,7 +92,7 @@ module.exports = {
/**
* Determine if provided keyword is a variable declaration
* @private
- * @param {string} keyword - keyword to test
+ * @param {string} keyword keyword to test
* @returns {boolean} True if `keyword` is a type of var
*/
function isVar(keyword) {
@@ -103,7 +102,7 @@ module.exports = {
/**
* Determine if provided keyword is a variant of for specifiers
* @private
- * @param {string} keyword - keyword to test
+ * @param {string} keyword keyword to test
* @returns {boolean} True if `keyword` is a variant of for specifier
*/
function isForTypeSpecifier(keyword) {
@@ -113,7 +112,7 @@ module.exports = {
/**
* Determine if provided keyword is an export specifiers
* @private
- * @param {string} nodeType - nodeType to test
+ * @param {string} nodeType nodeType to test
* @returns {boolean} True if `nodeType` is an export specifier
*/
function isExportSpecifier(nodeType) {
@@ -124,7 +123,7 @@ module.exports = {
/**
* Determine if provided node is the last of their parent block.
* @private
- * @param {ASTNode} node - node to test
+ * @param {ASTNode} node node to test
* @returns {boolean} True if `node` is last of their parent block.
*/
function isLastNode(node) {
@@ -159,7 +158,7 @@ module.exports = {
* set to "always", or checks that there is no blank line when mode is set
* to "never"
* @private
- * @param {ASTNode} node - `VariableDeclaration` node to test
+ * @param {ASTNode} node `VariableDeclaration` node to test
* @returns {void}
*/
function checkForBlankLine(node) {
diff --git a/tools/node_modules/eslint/lib/rules/newline-before-return.js b/tools/node_modules/eslint/lib/rules/newline-before-return.js
index 816ddba72b..65ca32321c 100644
--- a/tools/node_modules/eslint/lib/rules/newline-before-return.js
+++ b/tools/node_modules/eslint/lib/rules/newline-before-return.js
@@ -39,8 +39,8 @@ module.exports = {
/**
* Tests whether node is preceded by supplied tokens
- * @param {ASTNode} node - node to check
- * @param {Array} testTokens - array of tokens to test against
+ * @param {ASTNode} node node to check
+ * @param {Array} testTokens array of tokens to test against
* @returns {boolean} Whether or not the node is preceded by one of the supplied tokens
* @private
*/
@@ -52,7 +52,7 @@ module.exports = {
/**
* Checks whether node is the first node after statement or in block
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {boolean} Whether or not the node is the first node after statement or in block
* @private
*/
@@ -80,8 +80,8 @@ module.exports = {
/**
* Returns the number of lines of comments that precede the node
- * @param {ASTNode} node - node to check for overlapping comments
- * @param {number} lineNumTokenBefore - line number of previous token, to check for overlapping comments
+ * @param {ASTNode} node node to check for overlapping comments
+ * @param {number} lineNumTokenBefore line number of previous token, to check for overlapping comments
* @returns {number} Number of lines of comments that precede the node
* @private
*/
@@ -115,7 +115,7 @@ module.exports = {
/**
* Returns the line number of the token before the node that is passed in as an argument
- * @param {ASTNode} node - The node to use as the start of the calculation
+ * @param {ASTNode} node The node to use as the start of the calculation
* @returns {number} Line number of the token before `node`
* @private
*/
@@ -142,7 +142,7 @@ module.exports = {
/**
* Checks whether node is preceded by a newline
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {boolean} Whether or not the node is preceded by a newline
* @private
*/
@@ -160,8 +160,7 @@ module.exports = {
* The fix is not considered safe if the given return statement has leading comments,
* as we cannot safely determine if the newline should be added before or after the comments.
* For more information, see: https://github.com/eslint/eslint/issues/5958#issuecomment-222767211
- *
- * @param {ASTNode} node - The return statement node to check.
+ * @param {ASTNode} node The return statement node to check.
* @returns {boolean} `true` if it can fix the node.
* @private
*/
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 4aee76da10..8ad88386c0 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
@@ -53,8 +53,7 @@ module.exports = {
* Get the prefix of a given MemberExpression node.
* If the MemberExpression node is a computed value it returns a
* left bracket. If not it returns a period.
- *
- * @param {ASTNode} node - A MemberExpression node to get
+ * @param {ASTNode} node A MemberExpression node to get
* @returns {string} The prefix of the node.
*/
function getPrefix(node) {
@@ -64,8 +63,7 @@ module.exports = {
/**
* Gets the property text of a given MemberExpression node.
* If the text is multiline, this returns only the first line.
- *
- * @param {ASTNode} node - A MemberExpression node to get.
+ * @param {ASTNode} node A MemberExpression node to get.
* @returns {string} The property text of the node.
*/
function getPropertyText(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-class-assign.js b/tools/node_modules/eslint/lib/rules/no-class-assign.js
index 986bdd7c1c..887058ba0f 100644
--- a/tools/node_modules/eslint/lib/rules/no-class-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-class-assign.js
@@ -33,7 +33,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
@@ -45,7 +45,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {ASTNode} node - A ClassDeclaration/ClassExpression node to check.
+ * @param {ASTNode} node A ClassDeclaration/ClassExpression node to check.
* @returns {void}
*/
function checkForClass(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js b/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js
index f5c8d5f417..0c6865ad59 100644
--- a/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js
+++ b/tools/node_modules/eslint/lib/rules/no-compare-neg-zero.js
@@ -35,8 +35,7 @@ module.exports = {
/**
* Checks a given node is -0
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is -0.
*/
function isNegZero(node) {
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 895b9499dd..b9a0e6ed0a 100644
--- a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js
+++ b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js
@@ -14,7 +14,7 @@ const astUtils = require("./utils/ast-utils.js");
/**
* Checks whether or not a node is a conditional expression.
- * @param {ASTNode} node - node to test
+ * @param {ASTNode} node node to test
* @returns {boolean} `true` if the node is a conditional expression.
*/
function isConditional(node) {
@@ -59,7 +59,7 @@ module.exports = {
/**
* Reports if an arrow function contains an ambiguous conditional.
- * @param {ASTNode} node - A node to check and report.
+ * @param {ASTNode} node A node to check and report.
* @returns {void}
*/
function checkArrowFunc(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-console.js b/tools/node_modules/eslint/lib/rules/no-console.js
index e4b5ce1ea4..56dbbc3a9f 100644
--- a/tools/node_modules/eslint/lib/rules/no-console.js
+++ b/tools/node_modules/eslint/lib/rules/no-console.js
@@ -54,8 +54,7 @@ module.exports = {
/**
* Checks whether the given reference is 'console' or not.
- *
- * @param {eslint-scope.Reference} reference - The reference to check.
+ * @param {eslint-scope.Reference} reference The reference to check.
* @returns {boolean} `true` if the reference is 'console'.
*/
function isConsole(reference) {
@@ -67,8 +66,7 @@ module.exports = {
/**
* Checks whether the property name of the given MemberExpression node
* is allowed by options or not.
- *
- * @param {ASTNode} node - The MemberExpression node to check.
+ * @param {ASTNode} node The MemberExpression node to check.
* @returns {boolean} `true` if the property name of the node is allowed.
*/
function isAllowed(node) {
@@ -80,8 +78,7 @@ module.exports = {
/**
* Checks whether the given reference is a member access which is not
* allowed by options or not.
- *
- * @param {eslint-scope.Reference} reference - The reference to check.
+ * @param {eslint-scope.Reference} reference The reference to check.
* @returns {boolean} `true` if the reference is a member access which
* is not allowed by options.
*/
@@ -98,8 +95,7 @@ module.exports = {
/**
* Reports the given reference as a violation.
- *
- * @param {eslint-scope.Reference} reference - The reference to report.
+ * @param {eslint-scope.Reference} reference The reference to report.
* @returns {void}
*/
function report(reference) {
diff --git a/tools/node_modules/eslint/lib/rules/no-const-assign.js b/tools/node_modules/eslint/lib/rules/no-const-assign.js
index 9f4c91fa30..e4ae891705 100644
--- a/tools/node_modules/eslint/lib/rules/no-const-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-const-assign.js
@@ -33,7 +33,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-args.js b/tools/node_modules/eslint/lib/rules/no-dupe-args.js
index 4e42336ae3..817277f522 100644
--- a/tools/node_modules/eslint/lib/rules/no-dupe-args.js
+++ b/tools/node_modules/eslint/lib/rules/no-dupe-args.js
@@ -35,7 +35,7 @@ module.exports = {
/**
* Checks whether or not a given definition is a parameter's.
- * @param {eslint-scope.DefEntry} def - A definition to check.
+ * @param {eslint-scope.DefEntry} def A definition to check.
* @returns {boolean} `true` if the definition is a parameter's.
*/
function isParameter(def) {
diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js b/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js
index 97f63a2896..6041e9e371 100644
--- a/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js
+++ b/tools/node_modules/eslint/lib/rules/no-dupe-class-members.js
@@ -32,8 +32,8 @@ module.exports = {
/**
* Gets state of a given member name.
- * @param {string} name - A name of a member.
- * @param {boolean} isStatic - A flag which specifies that is a static member.
+ * @param {string} name A name of a member.
+ * @param {boolean} isStatic A flag which specifies that is a static member.
* @returns {Object} A state of a given member name.
* - retv.init {boolean} A flag which shows the name is declared as normal member.
* - retv.get {boolean} A flag which shows the name is declared as getter.
@@ -55,8 +55,7 @@ module.exports = {
/**
* Gets the name text of a given node.
- *
- * @param {ASTNode} node - A node to get the name.
+ * @param {ASTNode} node A node to get the name.
* @returns {string} The name text of the node.
*/
function getName(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-dupe-keys.js b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js
index 1b7f69cfac..89e1f2de64 100644
--- a/tools/node_modules/eslint/lib/rules/no-dupe-keys.js
+++ b/tools/node_modules/eslint/lib/rules/no-dupe-keys.js
@@ -23,9 +23,10 @@ const SET_KIND = /^(?:init|set)$/u;
*/
class ObjectInfo {
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {ObjectInfo|null} upper - The information of the outer object.
- * @param {ASTNode} node - The ObjectExpression node of this information.
+ * @param {ObjectInfo|null} upper The information of the outer object.
+ * @param {ASTNode} node The ObjectExpression node of this information.
*/
constructor(upper, node) {
this.upper = upper;
@@ -35,7 +36,7 @@ class ObjectInfo {
/**
* Gets the information of the given Property node.
- * @param {ASTNode} node - The Property node to get.
+ * @param {ASTNode} node The Property node to get.
* @returns {{get: boolean, set: boolean}} The information of the property.
*/
getPropertyInfo(node) {
@@ -49,7 +50,7 @@ class ObjectInfo {
/**
* Checks whether the given property has been defined already or not.
- * @param {ASTNode} node - The Property node to check.
+ * @param {ASTNode} node The Property node to check.
* @returns {boolean} `true` if the property has been defined.
*/
isPropertyDefined(node) {
@@ -63,7 +64,7 @@ class ObjectInfo {
/**
* Defines the given property.
- * @param {ASTNode} node - The Property node to define.
+ * @param {ASTNode} node The Property node to define.
* @returns {void}
*/
defineProperty(node) {
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 03b5e2c123..7218dc64ad 100644
--- a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js
+++ b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js
@@ -10,8 +10,7 @@
/**
* Returns the name of the module imported or re-exported.
- *
- * @param {ASTNode} node - A node to get.
+ * @param {ASTNode} node A node to get.
* @returns {string} the name of the module, or empty string if no name.
*/
function getValue(node) {
@@ -24,12 +23,11 @@ function getValue(node) {
/**
* Checks if the name of the import or export exists in the given array, and reports if so.
- *
- * @param {RuleContext} context - The ESLint rule context object.
- * @param {ASTNode} node - A node to get.
- * @param {string} value - The name of the imported or exported module.
- * @param {string[]} array - The array containing other imports or exports in the file.
- * @param {string} messageId - A messageId to be reported after the name of the module
+ * @param {RuleContext} context The ESLint rule context object.
+ * @param {ASTNode} node A node to get.
+ * @param {string} value The name of the imported or exported module.
+ * @param {string[]} array The array containing other imports or exports in the file.
+ * @param {string} messageId A messageId to be reported after the name of the module
*
* @returns {void} No return value
*/
@@ -47,16 +45,15 @@ function checkAndReport(context, node, value, array, messageId) {
/**
* @callback nodeCallback
- * @param {ASTNode} node - A node to handle.
+ * @param {ASTNode} node A node to handle.
*/
/**
* Returns a function handling the imports of a given file
- *
- * @param {RuleContext} context - The ESLint rule context object.
- * @param {boolean} includeExports - Whether or not to check for exports in addition to imports.
- * @param {string[]} importsInFile - The array containing other imports in the file.
- * @param {string[]} exportsInFile - The array containing other exports in the file.
+ * @param {RuleContext} context The ESLint rule context object.
+ * @param {boolean} includeExports Whether or not to check for exports in addition to imports.
+ * @param {string[]} importsInFile The array containing other imports in the file.
+ * @param {string[]} exportsInFile The array containing other exports in the file.
*
* @returns {nodeCallback} A function passed to ESLint to handle the statement.
*/
@@ -78,10 +75,9 @@ function handleImports(context, includeExports, importsInFile, exportsInFile) {
/**
* Returns a function handling the exports of a given file
- *
- * @param {RuleContext} context - The ESLint rule context object.
- * @param {string[]} importsInFile - The array containing other imports in the file.
- * @param {string[]} exportsInFile - The array containing other exports in the file.
+ * @param {RuleContext} context The ESLint rule context object.
+ * @param {string[]} importsInFile The array containing other imports in the file.
+ * @param {string[]} exportsInFile The array containing other exports in the file.
*
* @returns {nodeCallback} A function passed to ESLint to handle the statement.
*/
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 c63af2be52..84409fac87 100644
--- a/tools/node_modules/eslint/lib/rules/no-else-return.js
+++ b/tools/node_modules/eslint/lib/rules/no-else-return.js
@@ -58,7 +58,6 @@ module.exports = {
*
* This is not a generic function. In particular, it is assumed that the scope is a function scope or
* a function's inner scope, and that the names can be valid identifiers in the given scope.
- *
* @param {string[]} names Array of variable names.
* @param {eslint-scope.Scope} scope Function scope or a function's inner scope.
* @returns {boolean} True if all names can be safely declared, false otherwise.
@@ -134,7 +133,6 @@ module.exports = {
/**
* Checks whether the removal of `else` and its braces is safe from variable name collisions.
- *
* @param {Node} node The 'else' node.
* @param {eslint-scope.Scope} scope The scope in which the node and the whole 'if' statement is.
* @returns {boolean} True if it is safe, false otherwise.
@@ -171,7 +169,6 @@ module.exports = {
/**
* Display the context report if rule is violated
- *
* @param {Node} node The 'else' node
* @returns {void}
*/
@@ -255,7 +252,6 @@ module.exports = {
/**
* Check to see if the node is a ReturnStatement
- *
* @param {Node} node The node being evaluated
* @returns {boolean} True if node is a return
*/
@@ -267,7 +263,6 @@ module.exports = {
* Naive return checking, does not iterate through the whole
* BlockStatement because we make the assumption that the ReturnStatement
* will be the last node in the body of the BlockStatement.
- *
* @param {Node} node The consequent/alternate node
* @returns {boolean} True if it has a return
*/
@@ -284,7 +279,6 @@ module.exports = {
/**
* Check to see if the node is valid for evaluation,
* meaning it has an else.
- *
* @param {Node} node The node being evaluated
* @returns {boolean} True if the node is valid
*/
@@ -296,7 +290,6 @@ module.exports = {
* If the consequent is an IfStatement, check to see if it has an else
* and both its consequent and alternate path return, meaning this is
* a nested case of rule violation. If-Else not considered currently.
- *
* @param {Node} node The consequent node
* @returns {boolean} True if this is a nested rule violation
*/
@@ -309,7 +302,6 @@ module.exports = {
* Check the consequent/body node to make sure it is not
* a ReturnStatement or an IfStatement that returns on both
* code paths.
- *
* @param {Node} node The consequent or body node
* @returns {boolean} `true` if it is a Return/If node that always returns.
*/
diff --git a/tools/node_modules/eslint/lib/rules/no-empty-function.js b/tools/node_modules/eslint/lib/rules/no-empty-function.js
index 149b1477dc..c57e66fd53 100644
--- a/tools/node_modules/eslint/lib/rules/no-empty-function.js
+++ b/tools/node_modules/eslint/lib/rules/no-empty-function.js
@@ -28,8 +28,7 @@ const ALLOW_OPTIONS = Object.freeze([
/**
* Gets the kind of a given function node.
- *
- * @param {ASTNode} node - A function node to get. This is one of
+ * @param {ASTNode} node A function node to get. This is one of
* an ArrowFunctionExpression, a FunctionDeclaration, or a
* FunctionExpression.
* @returns {string} The kind of the function. This is one of "functions",
@@ -130,8 +129,7 @@ module.exports = {
* - Not allowed by options.
* - The body is empty.
* - The body doesn't have any comments.
- *
- * @param {ASTNode} node - A function node to report. This is one of
+ * @param {ASTNode} node A function node to report. This is one of
* an ArrowFunctionExpression, a FunctionDeclaration, or a
* FunctionExpression.
* @returns {void}
diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js
index d580f36925..9e56fb00b9 100644
--- a/tools/node_modules/eslint/lib/rules/no-eval.js
+++ b/tools/node_modules/eslint/lib/rules/no-eval.js
@@ -22,9 +22,8 @@ const candidatesOfGlobalObject = Object.freeze([
/**
* Checks a given node is a Identifier node of the specified name.
- *
- * @param {ASTNode} node - A node to check.
- * @param {string} name - A name to check.
+ * @param {ASTNode} node A node to check.
+ * @param {string} name A name to check.
* @returns {boolean} `true` if the node is a Identifier node of the name.
*/
function isIdentifier(node, name) {
@@ -33,9 +32,8 @@ function isIdentifier(node, name) {
/**
* Checks a given node is a Literal node of the specified string value.
- *
- * @param {ASTNode} node - A node to check.
- * @param {string} name - A name to check.
+ * @param {ASTNode} node A node to check.
+ * @param {string} name A name to check.
* @returns {boolean} `true` if the node is a Literal node of the name.
*/
function isConstant(node, name) {
@@ -57,9 +55,8 @@ function isConstant(node, name) {
/**
* Checks a given node is a MemberExpression node which has the specified name's
* property.
- *
- * @param {ASTNode} node - A node to check.
- * @param {string} name - A name to check.
+ * @param {ASTNode} node A node to check.
+ * @param {string} name A name to check.
* @returns {boolean} `true` if the node is a MemberExpression node which has
* the specified name's property
*/
@@ -113,8 +110,7 @@ module.exports = {
*
* This is used in order to check whether or not `this` binding is a
* reference to the global object.
- *
- * @param {ASTNode} node - A node of the scope. This is one of Program,
+ * @param {ASTNode} node A node of the scope. This is one of Program,
* FunctionDeclaration, FunctionExpression, and ArrowFunctionExpression.
* @returns {void}
*/
@@ -132,7 +128,6 @@ module.exports = {
/**
* Pops a variable scope from the stack.
- *
* @returns {void}
*/
function exitVarScope() {
@@ -148,8 +143,7 @@ module.exports = {
* The location of the report is always `eval` `Identifier` (or possibly
* `Literal`). The type of the report is `CallExpression` if the parent is
* `CallExpression`. Otherwise, it's the given node type.
- *
- * @param {ASTNode} node - A node to report.
+ * @param {ASTNode} node A node to report.
* @returns {void}
*/
function report(node) {
@@ -171,8 +165,7 @@ module.exports = {
/**
* Reports accesses of `eval` via the global object.
- *
- * @param {eslint-scope.Scope} globalScope - The global scope.
+ * @param {eslint-scope.Scope} globalScope The global scope.
* @returns {void}
*/
function reportAccessingEvalViaGlobalObject(globalScope) {
@@ -205,8 +198,7 @@ module.exports = {
/**
* Reports all accesses of `eval` (excludes direct calls to eval).
- *
- * @param {eslint-scope.Scope} globalScope - The global scope.
+ * @param {eslint-scope.Scope} globalScope The global scope.
* @returns {void}
*/
function reportAccessingEval(globalScope) {
diff --git a/tools/node_modules/eslint/lib/rules/no-ex-assign.js b/tools/node_modules/eslint/lib/rules/no-ex-assign.js
index 21d3220799..1163920361 100644
--- a/tools/node_modules/eslint/lib/rules/no-ex-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-ex-assign.js
@@ -33,7 +33,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-bind.js b/tools/node_modules/eslint/lib/rules/no-extra-bind.js
index cc5611b108..d938c0f51b 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-bind.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-bind.js
@@ -47,7 +47,6 @@ module.exports = {
* Checks if a node is free of side effects.
*
* This check is stricter than it needs to be, in order to keep the implementation simple.
- *
* @param {ASTNode} node A node to check.
* @returns {boolean} True if the node is known to be side-effect free, false otherwise.
*/
@@ -57,8 +56,7 @@ module.exports = {
/**
* Reports a given function node.
- *
- * @param {ASTNode} node - A node to report. This is a FunctionExpression or
+ * @param {ASTNode} node A node to report. This is a FunctionExpression or
* an ArrowFunctionExpression.
* @returns {void}
*/
@@ -90,8 +88,7 @@ module.exports = {
* method.
*
* e.g. `(function() {}.bind(foo))`
- *
- * @param {ASTNode} node - A node to report. This is a FunctionExpression or
+ * @param {ASTNode} node A node to report. This is a FunctionExpression or
* an ArrowFunctionExpression.
* @returns {boolean} `true` if the node is the callee of `.bind()` method.
*/
@@ -113,8 +110,7 @@ module.exports = {
/**
* Adds a scope information object to the stack.
- *
- * @param {ASTNode} node - A node to add. This node is a FunctionExpression
+ * @param {ASTNode} node A node to add. This node is a FunctionExpression
* or a FunctionDeclaration node.
* @returns {void}
*/
@@ -130,8 +126,7 @@ module.exports = {
* Removes the scope information object from the top of the stack.
* At the same time, this reports the function node if the function has
* `.bind()` and the `this` keywords found.
- *
- * @param {ASTNode} node - A node to remove. This node is a
+ * @param {ASTNode} node A node to remove. This node is a
* FunctionExpression or a FunctionDeclaration node.
* @returns {void}
*/
@@ -146,8 +141,7 @@ module.exports = {
/**
* Reports a given arrow function if the function is callee of `.bind()`
* method.
- *
- * @param {ASTNode} node - A node to report. This node is an
+ * @param {ASTNode} node A node to report. This node is an
* ArrowFunctionExpression.
* @returns {void}
*/
@@ -159,7 +153,6 @@ module.exports = {
/**
* Set the mark as the `this` keyword was found in this scope.
- *
* @returns {void}
*/
function markAsThisFound() {
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js b/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js
index e818cd448c..336f601d16 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-boolean-cast.js
@@ -49,7 +49,6 @@ module.exports = {
/**
* Check if a node is in a context where its value would be coerced to a boolean at runtime.
- *
* @param {ASTNode} node The node
* @param {ASTNode} parent Its parent
* @returns {boolean} If it is in a boolean context
@@ -67,7 +66,6 @@ module.exports = {
/**
* Check if a node has comments inside.
- *
* @param {ASTNode} node The node to check.
* @returns {boolean} `true` if it has comments inside.
*/
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-label.js b/tools/node_modules/eslint/lib/rules/no-extra-label.js
index 48add937e6..81406e7609 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-label.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-label.js
@@ -40,8 +40,7 @@ module.exports = {
/**
* Creates a new scope with a breakable statement.
- *
- * @param {ASTNode} node - A node to create. This is a BreakableStatement.
+ * @param {ASTNode} node A node to create. This is a BreakableStatement.
* @returns {void}
*/
function enterBreakableStatement(node) {
@@ -54,7 +53,6 @@ module.exports = {
/**
* Removes the top scope of the stack.
- *
* @returns {void}
*/
function exitBreakableStatement() {
@@ -66,8 +64,7 @@ module.exports = {
*
* This ignores it if the body is a breakable statement.
* In this case it's handled in the `enterBreakableStatement` function.
- *
- * @param {ASTNode} node - A node to create. This is a LabeledStatement.
+ * @param {ASTNode} node A node to create. This is a LabeledStatement.
* @returns {void}
*/
function enterLabeledStatement(node) {
@@ -85,8 +82,7 @@ module.exports = {
*
* This ignores it if the body is a breakable statement.
* In this case it's handled in the `exitBreakableStatement` function.
- *
- * @param {ASTNode} node - A node. This is a LabeledStatement.
+ * @param {ASTNode} node A node. This is a LabeledStatement.
* @returns {void}
*/
function exitLabeledStatement(node) {
@@ -97,8 +93,7 @@ module.exports = {
/**
* Reports a given control node if it's unnecessary.
- *
- * @param {ASTNode} node - A node. This is a BreakStatement or a
+ * @param {ASTNode} node A node. This is a BreakStatement or a
* ContinueStatement.
* @returns {void}
*/
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 c6809c355b..f96e572bfe 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js
@@ -50,7 +50,8 @@ module.exports = {
returnAssign: { type: "boolean" },
ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] },
enforceForArrowConditionals: { type: "boolean" },
- enforceForSequenceExpressions: { type: "boolean" }
+ enforceForSequenceExpressions: { type: "boolean" },
+ enforceForNewInMemberExpressions: { type: "boolean" }
},
additionalProperties: false
}
@@ -80,6 +81,8 @@ module.exports = {
context.options[1].enforceForArrowConditionals === false;
const IGNORE_SEQUENCE_EXPRESSIONS = ALL_NODES && context.options[1] &&
context.options[1].enforceForSequenceExpressions === false;
+ const IGNORE_NEW_IN_MEMBER_EXPR = ALL_NODES && context.options[1] &&
+ context.options[1].enforceForNewInMemberExpressions === false;
const PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({ type: "AssignmentExpression" });
const PRECEDENCE_OF_UPDATE_EXPR = precedence({ type: "UpdateExpression" });
@@ -88,7 +91,7 @@ module.exports = {
/**
* Determines if this rule should be enforced for a node given the current configuration.
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the rule should be enforced for this node.
* @private
*/
@@ -127,7 +130,7 @@ module.exports = {
/**
* Determines if a node is surrounded by parentheses.
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is parenthesised.
* @private
*/
@@ -137,7 +140,7 @@ module.exports = {
/**
* Determines if a node is surrounded by parentheses twice.
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is doubly parenthesised.
* @private
*/
@@ -147,7 +150,7 @@ module.exports = {
/**
* Determines if a node is surrounded by (potentially) invalid parentheses.
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is incorrectly parenthesised.
* @private
*/
@@ -158,7 +161,7 @@ module.exports = {
/**
* Determines if a node that is expected to be parenthesised is surrounded by
* (potentially) invalid extra parentheses.
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is has an unexpected extra pair of parentheses.
* @private
*/
@@ -168,7 +171,7 @@ module.exports = {
/**
* Determines if a node test expression is allowed to have a parenthesised assignment
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the assignment can be parenthesised.
* @private
*/
@@ -178,7 +181,7 @@ module.exports = {
/**
* Determines if a node is in a return statement
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is in a return statement.
* @private
*/
@@ -197,7 +200,7 @@ module.exports = {
/**
* Determines if a constructor function is newed-up with parens
- * @param {ASTNode} newExpression - The NewExpression node to be checked.
+ * @param {ASTNode} newExpression The NewExpression node to be checked.
* @returns {boolean} True if the constructor is called with parens.
* @private
*/
@@ -217,7 +220,7 @@ module.exports = {
/**
* Determines if a node is or contains an assignment expression
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is or contains an assignment expression.
* @private
*/
@@ -239,7 +242,7 @@ module.exports = {
/**
* Determines if a node is contained by or is itself a return statement and is allowed to have a parenthesised assignment
- * @param {ASTNode} node - The node to be checked.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the assignment can be parenthesised.
* @private
*/
@@ -261,8 +264,8 @@ module.exports = {
/**
* Determines if a node following a [no LineTerminator here] restriction is
* surrounded by (potentially) invalid extra parentheses.
- * @param {Token} token - The token preceding the [no LineTerminator here] restriction.
- * @param {ASTNode} node - The node to be checked.
+ * @param {Token} token The token preceding the [no LineTerminator here] restriction.
+ * @param {ASTNode} node The node to be checked.
* @returns {boolean} True if the node is incorrectly parenthesised.
* @private
*/
@@ -567,7 +570,6 @@ module.exports = {
/**
* Checks whether the syntax of the given ancestor of an 'in' expression inside a for-loop initializer
* is preventing the 'in' keyword from being interpreted as a part of an ill-formed for-in loop.
- *
* @param {ASTNode} node Ancestor of an 'in' expression.
* @param {ASTNode} child Child of the node, ancestor of the same 'in' expression or the 'in' expression itself.
* @returns {boolean} True if the keyword 'in' would be interpreted as the 'in' operator, without any parenthesis.
@@ -599,7 +601,6 @@ module.exports = {
/**
* Starts a new reports buffering. Warnings will be stored in a buffer instead of being reported immediately.
* An additional logic that requires multiple nodes (e.g. a whole subtree) may dismiss some of the stored warnings.
- *
* @returns {void}
*/
function startNewReportsBuffering() {
@@ -895,6 +896,7 @@ module.exports = {
}
if (nodeObjHasExcessParens &&
+ !IGNORE_NEW_IN_MEMBER_EXPR &&
node.object.type === "NewExpression" &&
isNewExpressionWithParens(node.object)) {
report(node.object);
diff --git a/tools/node_modules/eslint/lib/rules/no-extra-semi.js b/tools/node_modules/eslint/lib/rules/no-extra-semi.js
index e99dd67b35..e0a8df0565 100644
--- a/tools/node_modules/eslint/lib/rules/no-extra-semi.js
+++ b/tools/node_modules/eslint/lib/rules/no-extra-semi.js
@@ -40,7 +40,7 @@ module.exports = {
/**
* Reports an unnecessary semicolon error.
- * @param {Node|Token} nodeOrToken - A node or a token to be reported.
+ * @param {Node|Token} nodeOrToken A node or a token to be reported.
* @returns {void}
*/
function report(nodeOrToken) {
@@ -64,8 +64,7 @@ module.exports = {
/**
* Checks for a part of a class body.
* This checks tokens from a specified token to a next MethodDefinition or the end of class body.
- *
- * @param {Token} firstToken - The first token to check.
+ * @param {Token} firstToken The first token to check.
* @returns {void}
*/
function checkForPartOfClassBody(firstToken) {
@@ -83,7 +82,7 @@ module.exports = {
/**
* Reports this empty statement, except if the parent node is a loop.
- * @param {Node} node - A EmptyStatement node to be reported.
+ * @param {Node} node A EmptyStatement node to be reported.
* @returns {void}
*/
EmptyStatement(node) {
@@ -106,7 +105,7 @@ module.exports = {
/**
* Checks tokens from the head of this class body to the first MethodDefinition or the end of this class body.
- * @param {Node} node - A ClassBody node to check.
+ * @param {Node} node A ClassBody node to check.
* @returns {void}
*/
ClassBody(node) {
@@ -115,7 +114,7 @@ module.exports = {
/**
* Checks tokens from this MethodDefinition to the next MethodDefinition or the end of this class body.
- * @param {Node} node - A MethodDefinition node of the start point.
+ * @param {Node} node A MethodDefinition node of the start point.
* @returns {void}
*/
MethodDefinition(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js
index c6a71b6c8c..dd1f3ed9d9 100644
--- a/tools/node_modules/eslint/lib/rules/no-fallthrough.js
+++ b/tools/node_modules/eslint/lib/rules/no-fallthrough.js
@@ -18,9 +18,9 @@ const DEFAULT_FALLTHROUGH_COMMENT = /falls?\s?through/iu;
/**
* Checks whether or not a given node has a fallthrough comment.
- * @param {ASTNode} node - A SwitchCase node to get comments.
- * @param {RuleContext} context - A rule context which stores comments.
- * @param {RegExp} fallthroughCommentPattern - A pattern to match comment to.
+ * @param {ASTNode} node A SwitchCase node to get comments.
+ * @param {RuleContext} context A rule context which stores comments.
+ * @param {RegExp} fallthroughCommentPattern A pattern to match comment to.
* @returns {boolean} `true` if the node has a valid fallthrough comment.
*/
function hasFallthroughComment(node, context, fallthroughCommentPattern) {
@@ -32,7 +32,7 @@ function hasFallthroughComment(node, context, fallthroughCommentPattern) {
/**
* Checks whether or not a given code path segment is reachable.
- * @param {CodePathSegment} segment - A CodePathSegment to check.
+ * @param {CodePathSegment} segment A CodePathSegment to check.
* @returns {boolean} `true` if the segment is reachable.
*/
function isReachable(segment) {
@@ -41,8 +41,8 @@ function isReachable(segment) {
/**
* Checks whether a node and a token are separated by blank lines
- * @param {ASTNode} node - The node to check
- * @param {Token} token - The token to compare against
+ * @param {ASTNode} node The node to check
+ * @param {Token} token The token to compare against
* @returns {boolean} `true` if there are blank lines between node and token
*/
function hasBlankLinesBetween(node, token) {
diff --git a/tools/node_modules/eslint/lib/rules/no-func-assign.js b/tools/node_modules/eslint/lib/rules/no-func-assign.js
index d2b4109fa3..66756e62be 100644
--- a/tools/node_modules/eslint/lib/rules/no-func-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-func-assign.js
@@ -29,7 +29,7 @@ module.exports = {
/**
* Reports a reference if is non initializer and writable.
- * @param {References} references - Collection of reference to check.
+ * @param {References} references Collection of reference to check.
* @returns {void}
*/
function checkReference(references) {
@@ -40,7 +40,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
@@ -51,7 +51,7 @@ module.exports = {
/**
* Checks parameters of a given function node.
- * @param {ASTNode} node - A function node to check.
+ * @param {ASTNode} node A function node to check.
* @returns {void}
*/
function checkForFunction(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-global-assign.js b/tools/node_modules/eslint/lib/rules/no-global-assign.js
index 73f36b25e4..4ab0c70644 100644
--- a/tools/node_modules/eslint/lib/rules/no-global-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-global-assign.js
@@ -41,9 +41,9 @@ module.exports = {
/**
* Reports write references.
- * @param {Reference} reference - A reference to check.
- * @param {int} index - The index of the reference in the references.
- * @param {Reference[]} references - The array that the reference belongs to.
+ * @param {Reference} reference A reference to check.
+ * @param {int} index The index of the reference in the references.
+ * @param {Reference[]} references The array that the reference belongs to.
* @returns {void}
*/
function checkReference(reference, index, references) {
@@ -68,7 +68,7 @@ module.exports = {
/**
* Reports write references if a given variable is read-only builtin.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
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 7d463ac2bd..c80f981302 100644
--- a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js
+++ b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js
@@ -16,7 +16,7 @@ const ALLOWABLE_OPERATORS = ["~", "!!", "+", "*"];
/**
* Parses and normalizes an option object.
- * @param {Object} options - An option object to parse.
+ * @param {Object} options An option object to parse.
* @returns {Object} The parsed and normalized option object.
*/
function parseOptions(options) {
@@ -30,7 +30,7 @@ function parseOptions(options) {
/**
* Checks whether or not a node is a double logical nigating.
- * @param {ASTNode} node - An UnaryExpression node to check.
+ * @param {ASTNode} node An UnaryExpression node to check.
* @returns {boolean} Whether or not the node is a double logical nigating.
*/
function isDoubleLogicalNegating(node) {
@@ -43,7 +43,7 @@ function isDoubleLogicalNegating(node) {
/**
* Checks whether or not a node is a binary negating of `.indexOf()` method calling.
- * @param {ASTNode} node - An UnaryExpression node to check.
+ * @param {ASTNode} node An UnaryExpression node to check.
* @returns {boolean} Whether or not the node is a binary negating of `.indexOf()` method calling.
*/
function isBinaryNegatingOfIndexOf(node) {
@@ -58,7 +58,7 @@ function isBinaryNegatingOfIndexOf(node) {
/**
* Checks whether or not a node is a multiplying by one.
- * @param {BinaryExpression} node - A BinaryExpression node to check.
+ * @param {BinaryExpression} node A BinaryExpression node to check.
* @returns {boolean} Whether or not the node is a multiplying by one.
*/
function isMultiplyByOne(node) {
@@ -118,7 +118,7 @@ function isEmptyString(node) {
/**
* Checks whether or not a node is a concatenating with an empty string.
- * @param {ASTNode} node - A BinaryExpression node to check.
+ * @param {ASTNode} node A BinaryExpression node to check.
* @returns {boolean} Whether or not the node is a concatenating with an empty string.
*/
function isConcatWithEmptyString(node) {
@@ -130,7 +130,7 @@ function isConcatWithEmptyString(node) {
/**
* Checks whether or not a node is appended with an empty string.
- * @param {ASTNode} node - An AssignmentExpression node to check.
+ * @param {ASTNode} node An AssignmentExpression node to check.
* @returns {boolean} Whether or not the node is appended with an empty string.
*/
function isAppendEmptyString(node) {
@@ -139,7 +139,7 @@ function isAppendEmptyString(node) {
/**
* Returns the operand that is not an empty string from a flagged BinaryExpression.
- * @param {ASTNode} node - The flagged BinaryExpression node to check.
+ * @param {ASTNode} node The flagged BinaryExpression node to check.
* @returns {ASTNode} The operand that is not an empty string from a flagged BinaryExpression.
*/
function getNonEmptyOperand(node) {
@@ -196,9 +196,9 @@ module.exports = {
/**
* Reports an error and autofixes the node
- * @param {ASTNode} node - An ast node to report the error on.
- * @param {string} recommendation - The recommended code for the issue
- * @param {bool} shouldFix - Whether this report should fix the node
+ * @param {ASTNode} node An ast node to report the error on.
+ * @param {string} recommendation The recommended code for the issue
+ * @param {bool} shouldFix Whether this report should fix the node
* @returns {void}
*/
function report(node, recommendation, shouldFix) {
diff --git a/tools/node_modules/eslint/lib/rules/no-implied-eval.js b/tools/node_modules/eslint/lib/rules/no-implied-eval.js
index f2f6f9cea4..e0764d8223 100644
--- a/tools/node_modules/eslint/lib/rules/no-implied-eval.js
+++ b/tools/node_modules/eslint/lib/rules/no-implied-eval.js
@@ -64,7 +64,6 @@ module.exports = {
* Determines if a node represents a call to a potentially implied eval.
*
* This checks the callee name and that there's an argument, but not the type of the argument.
- *
* @param {ASTNode} node The CallExpression to check.
* @returns {boolean} True if the node matches, false if not.
* @private
diff --git a/tools/node_modules/eslint/lib/rules/no-invalid-this.js b/tools/node_modules/eslint/lib/rules/no-invalid-this.js
index 30ae3fdc31..b1dddd9319 100644
--- a/tools/node_modules/eslint/lib/rules/no-invalid-this.js
+++ b/tools/node_modules/eslint/lib/rules/no-invalid-this.js
@@ -38,7 +38,6 @@ module.exports = {
*
* The return value has a flag that whether or not `this` keyword is valid.
* The flag is initialized when got at the first time.
- *
* @returns {{valid: boolean}}
* an object which has a flag that whether or not `this` keyword is valid.
*/
@@ -61,8 +60,7 @@ module.exports = {
* The checking context is not initialized yet.
* Because most functions don't have `this` keyword.
* When `this` keyword was found, the checking context is initialized.
- *
- * @param {ASTNode} node - A function node that was entered.
+ * @param {ASTNode} node A function node that was entered.
* @returns {void}
*/
function enterFunction(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js
index 8168dc06c1..52f4b0f516 100644
--- a/tools/node_modules/eslint/lib/rules/no-labels.js
+++ b/tools/node_modules/eslint/lib/rules/no-labels.js
@@ -51,8 +51,7 @@ module.exports = {
/**
* Gets the kind of a given node.
- *
- * @param {ASTNode} node - A node to get.
+ * @param {ASTNode} node A node to get.
* @returns {string} The kind of the node.
*/
function getBodyKind(node) {
@@ -67,8 +66,7 @@ module.exports = {
/**
* Checks whether the label of a given kind is allowed or not.
- *
- * @param {string} kind - A kind to check.
+ * @param {string} kind A kind to check.
* @returns {boolean} `true` if the kind is allowed.
*/
function isAllowed(kind) {
@@ -81,8 +79,7 @@ module.exports = {
/**
* Checks whether a given name is a label of a loop or not.
- *
- * @param {string} label - A name of a label to check.
+ * @param {string} label A name of a label to check.
* @returns {boolean} `true` if the name is a label of a loop.
*/
function getKind(label) {
diff --git a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
index 4365b04786..37561b0f9a 100644
--- a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
+++ b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
@@ -31,7 +31,7 @@ module.exports = {
/**
* Reports a node as invalid.
- * @param {ASTNode} node - The node to be reported.
+ * @param {ASTNode} node The node to be reported.
* @returns {void}
*/
function report(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-loop-func.js b/tools/node_modules/eslint/lib/rules/no-loop-func.js
index f4531f3a7d..13ebd3ee22 100644
--- a/tools/node_modules/eslint/lib/rules/no-loop-func.js
+++ b/tools/node_modules/eslint/lib/rules/no-loop-func.js
@@ -14,8 +14,7 @@
*
* We don't need to check nested functions, so this ignores those.
* `Scope.through` contains references of nested functions.
- *
- * @param {ASTNode} node - An AST node to get.
+ * @param {ASTNode} node An AST node to get.
* @returns {ASTNode|null} The containing loop node of the specified node, or
* `null`.
*/
@@ -63,9 +62,8 @@ function getContainingLoopNode(node) {
/**
* Gets the containing loop node of a given node.
* If the loop was nested, this returns the most outer loop.
- *
- * @param {ASTNode} node - A node to get. This is a loop node.
- * @param {ASTNode|null} excludedNode - A node that the result node should not
+ * @param {ASTNode} node A node to get. This is a loop node.
+ * @param {ASTNode|null} excludedNode A node that the result node should not
* include.
* @returns {ASTNode} The most outer loop node.
*/
@@ -85,9 +83,8 @@ function getTopLoopNode(node, excludedNode) {
/**
* Checks whether a given reference which refers to an upper scope's variable is
* safe or not.
- *
- * @param {ASTNode} loopNode - A containing loop node.
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {ASTNode} loopNode A containing loop node.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is safe or not.
*/
function isSafe(loopNode, reference) {
@@ -131,8 +128,7 @@ function isSafe(loopNode, reference) {
* It's safeafe if the reference matches one of the following condition.
* - is readonly.
* - doesn't exist inside a local function and after the border.
- *
- * @param {eslint-scope.Reference} upperRef - A reference to check.
+ * @param {eslint-scope.Reference} upperRef A reference to check.
* @returns {boolean} `true` if the reference is safe.
*/
function isSafeReference(upperRef) {
@@ -177,7 +173,6 @@ module.exports = {
*
* - has a loop node in ancestors.
* - has any references which refers to an unsafe variable.
- *
* @param {ASTNode} node The AST node to check.
* @returns {boolean} Whether or not the node is within a loop.
*/
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 2c6ea61e28..0909e3166d 100644
--- a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js
+++ b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js
@@ -61,7 +61,7 @@ module.exports = {
/**
* Returns whether the node is number literal
- * @param {Node} node - the node literal being evaluated
+ * @param {Node} node the node literal being evaluated
* @returns {boolean} true if the node is a number literal
*/
function isNumber(node) {
@@ -70,7 +70,7 @@ module.exports = {
/**
* Returns whether the number should be ignored
- * @param {number} num - the number
+ * @param {number} num the number
* @returns {boolean} true if the number should be ignored
*/
function shouldIgnoreNumber(num) {
@@ -79,8 +79,8 @@ module.exports = {
/**
* Returns whether the number should be ignored when used as a radix within parseInt() or Number.parseInt()
- * @param {ASTNode} parent - the non-"UnaryExpression" parent
- * @param {ASTNode} node - the node literal being evaluated
+ * @param {ASTNode} parent the non-"UnaryExpression" parent
+ * @param {ASTNode} node the node literal being evaluated
* @returns {boolean} true if the number should be ignored
*/
function shouldIgnoreParseInt(parent, node) {
@@ -93,7 +93,7 @@ module.exports = {
/**
* Returns whether the number should be ignored when used to define a JSX prop
- * @param {ASTNode} parent - the non-"UnaryExpression" parent
+ * @param {ASTNode} parent the non-"UnaryExpression" parent
* @returns {boolean} true if the number should be ignored
*/
function shouldIgnoreJSXNumbers(parent) {
@@ -102,7 +102,7 @@ module.exports = {
/**
* Returns whether the number should be ignored when used as an array index with enabled 'ignoreArrayIndexes' option.
- * @param {ASTNode} parent - the non-"UnaryExpression" parent.
+ * @param {ASTNode} parent the non-"UnaryExpression" parent.
* @returns {boolean} true if the number should be ignored
*/
function shouldIgnoreArrayIndexes(parent) {
diff --git a/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js b/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
index d7c394f463..9315ba6497 100644
--- a/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
+++ b/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
@@ -16,7 +16,6 @@ const { isCombiningCharacter, isEmojiModifier, isRegionalIndicatorSymbol, isSurr
*
* CharacterClassRange syntax can steal a part of character sequence,
* so this function reverts CharacterClassRange syntax and restore the sequence.
- *
* @param {regexpp.AST.CharacterClassElement[]} nodes The node list to iterate character sequences.
* @returns {IterableIterator<number[]>} The list of character sequences.
*/
@@ -131,12 +130,6 @@ module.exports = {
* @returns {void}
*/
function verify(node, pattern, flags) {
- const patternNode = parser.parsePattern(
- pattern,
- 0,
- pattern.length,
- flags.includes("u")
- );
const has = {
surrogatePairWithoutUFlag: false,
combiningClass: false,
@@ -145,6 +138,20 @@ module.exports = {
regionalIndicatorSymbol: false,
zwj: false
};
+ let patternNode;
+
+ try {
+ patternNode = parser.parsePattern(
+ pattern,
+ 0,
+ pattern.length,
+ flags.includes("u")
+ );
+ } catch (e) {
+
+ // Ignore regular expressions with syntax errors
+ return;
+ }
visitRegExpAST(patternNode, {
onCharacterClassEnter(ccNode) {
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 8d1c7a6af4..80fac79aff 100644
--- a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js
+++ b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js
@@ -40,8 +40,7 @@ const TARGET_NODE_TYPE = /^(?:Binary|Logical|Conditional)Expression$/u;
/**
* Normalizes options.
- *
- * @param {Object|undefined} options - A options object to normalize.
+ * @param {Object|undefined} options A options object to normalize.
* @returns {Object} Normalized option object.
*/
function normalizeOptions(options = {}) {
@@ -57,10 +56,9 @@ function normalizeOptions(options = {}) {
/**
* Checks whether any group which includes both given operator exists or not.
- *
- * @param {Array.<string[]>} groups - A list of groups to check.
- * @param {string} left - An operator.
- * @param {string} right - Another operator.
+ * @param {Array.<string[]>} groups A list of groups to check.
+ * @param {string} left An operator.
+ * @param {string} right Another operator.
* @returns {boolean} `true` if such group existed.
*/
function includesBothInAGroup(groups, left, right) {
@@ -69,8 +67,7 @@ function includesBothInAGroup(groups, left, right) {
/**
* Checks whether the given node is a conditional expression and returns the test node else the left node.
- *
- * @param {ASTNode} node - A node which can be a BinaryExpression or a LogicalExpression node.
+ * @param {ASTNode} node A node which can be a BinaryExpression or a LogicalExpression node.
* This parent node can be BinaryExpression, LogicalExpression
* , or a ConditionalExpression node
* @returns {ASTNode} node the appropriate node(left or test).
@@ -124,8 +121,7 @@ module.exports = {
/**
* Checks whether a given node should be ignored by options or not.
- *
- * @param {ASTNode} node - A node to check. This is a BinaryExpression
+ * @param {ASTNode} node A node to check. This is a BinaryExpression
* node or a LogicalExpression node. This parent node is one of
* them, too.
* @returns {boolean} `true` if the node should be ignored.
@@ -146,8 +142,7 @@ module.exports = {
/**
* Checks whether the operator of a given node is mixed with parent
* node's operator or not.
- *
- * @param {ASTNode} node - A node to check. This is a BinaryExpression
+ * @param {ASTNode} node A node to check. This is a BinaryExpression
* node or a LogicalExpression node. This parent node is one of
* them, too.
* @returns {boolean} `true` if the node was mixed.
@@ -163,8 +158,7 @@ module.exports = {
/**
* Checks whether the operator of a given node is mixed with a
* conditional expression.
- *
- * @param {ASTNode} node - A node to check. This is a conditional
+ * @param {ASTNode} node A node to check. This is a conditional
* expression node
* @returns {boolean} `true` if the node was mixed.
*/
@@ -174,8 +168,7 @@ module.exports = {
/**
* Gets the operator token of a given node.
- *
- * @param {ASTNode} node - A node to check. This is a BinaryExpression
+ * @param {ASTNode} node A node to check. This is a BinaryExpression
* node or a LogicalExpression node.
* @returns {Token} The operator token of the node.
*/
@@ -186,8 +179,7 @@ module.exports = {
/**
* Reports both the operator of a given node and the operator of the
* parent node.
- *
- * @param {ASTNode} node - A node to check. This is a BinaryExpression
+ * @param {ASTNode} node A node to check. This is a BinaryExpression
* node or a LogicalExpression node. This parent node is one of
* them, too.
* @returns {void}
@@ -205,13 +197,13 @@ module.exports = {
context.report({
node: left,
- loc: getOperatorToken(left).loc.start,
+ loc: getOperatorToken(left).loc,
message,
data
});
context.report({
node: right,
- loc: getOperatorToken(right).loc.start,
+ loc: getOperatorToken(right).loc,
message,
data
});
@@ -220,8 +212,7 @@ module.exports = {
/**
* Checks between the operator of this node and the operator of the
* parent node.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function check(node) {
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 e3164a8aba..fda8a11d9e 100644
--- a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js
+++ b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js
@@ -58,7 +58,6 @@ module.exports = {
/**
* Returns the list of built-in modules.
- *
* @returns {string[]} An array of built-in Node.js modules.
*/
function getBuiltinModules() {
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 64a04c5cc5..403d04da9d 100644
--- a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js
+++ b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js
@@ -121,7 +121,7 @@ module.exports = {
context.report({
node: rightToken,
- loc: rightToken.loc.start,
+ loc: { start: leftToken.loc.end, end: rightToken.loc.start },
message: "Multiple spaces found before '{{displayValue}}'.",
data: { displayValue },
fix: fixer => fixer.replaceTextRange([leftToken.range[1], rightToken.range[0]], " ")
diff --git a/tools/node_modules/eslint/lib/rules/no-native-reassign.js b/tools/node_modules/eslint/lib/rules/no-native-reassign.js
index 9ecfb4da7c..eb233c80b1 100644
--- a/tools/node_modules/eslint/lib/rules/no-native-reassign.js
+++ b/tools/node_modules/eslint/lib/rules/no-native-reassign.js
@@ -46,9 +46,9 @@ module.exports = {
/**
* Reports write references.
- * @param {Reference} reference - A reference to check.
- * @param {int} index - The index of the reference in the references.
- * @param {Reference[]} references - The array that the reference belongs to.
+ * @param {Reference} reference A reference to check.
+ * @param {int} index The index of the reference in the references.
+ * @param {Reference[]} references The array that the reference belongs to.
* @returns {void}
*/
function checkReference(reference, index, references) {
@@ -73,7 +73,7 @@ module.exports = {
/**
* Reports write references if a given variable is read-only builtin.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
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 9b8c828d2c..d65eb34762 100644
--- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js
+++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js
@@ -45,6 +45,13 @@ module.exports = {
type: "string"
},
uniqueItems: true
+ },
+ ignorePropertyModificationsForRegex: {
+ type: "array",
+ items: {
+ type: "string"
+ },
+ uniqueItems: true
}
},
additionalProperties: false
@@ -57,10 +64,11 @@ module.exports = {
create(context) {
const props = context.options[0] && context.options[0].props;
const ignoredPropertyAssignmentsFor = context.options[0] && context.options[0].ignorePropertyModificationsFor || [];
+ const ignoredPropertyAssignmentsForRegex = context.options[0] && context.options[0].ignorePropertyModificationsForRegex || [];
/**
* Checks whether or not the reference modifies properties of its variable.
- * @param {Reference} reference - A reference to check.
+ * @param {Reference} reference A reference to check.
* @returns {boolean} Whether or not the reference modifies properties of its variable.
*/
function isModifyingProp(reference) {
@@ -137,10 +145,23 @@ module.exports = {
}
/**
+ * Tests that an identifier name matches any of the ignored property assignments.
+ * First we test strings in ignoredPropertyAssignmentsFor.
+ * Then we instantiate and test RegExp objects from ignoredPropertyAssignmentsForRegex strings.
+ * @param {string} identifierName A string that describes the name of an identifier to
+ * ignore property assignments for.
+ * @returns {boolean} Whether the string matches an ignored property assignment regular expression or not.
+ */
+ function isIgnoredPropertyAssignment(identifierName) {
+ return ignoredPropertyAssignmentsFor.includes(identifierName) ||
+ ignoredPropertyAssignmentsForRegex.some(ignored => new RegExp(ignored, "u").test(identifierName));
+ }
+
+ /**
* Reports a reference if is non initializer and writable.
- * @param {Reference} reference - A reference to check.
- * @param {int} index - The index of the reference in the references.
- * @param {Reference[]} references - The array that the reference belongs to.
+ * @param {Reference} reference A reference to check.
+ * @param {int} index The index of the reference in the references.
+ * @param {Reference[]} references The array that the reference belongs to.
* @returns {void}
*/
function checkReference(reference, index, references) {
@@ -157,7 +178,7 @@ module.exports = {
) {
if (reference.isWrite()) {
context.report({ node: identifier, message: "Assignment to function parameter '{{name}}'.", data: { name: identifier.name } });
- } else if (props && isModifyingProp(reference) && ignoredPropertyAssignmentsFor.indexOf(identifier.name) === -1) {
+ } else if (props && isModifyingProp(reference) && !isIgnoredPropertyAssignment(identifier.name)) {
context.report({ node: identifier, message: "Assignment to property of function parameter '{{name}}'.", data: { name: identifier.name } });
}
}
@@ -165,7 +186,7 @@ module.exports = {
/**
* Finds and reports references that are non initializer and writable.
- * @param {Variable} variable - A variable to check.
+ * @param {Variable} variable A variable to check.
* @returns {void}
*/
function checkVariable(variable) {
@@ -176,7 +197,7 @@ module.exports = {
/**
* Checks parameters of a given function node.
- * @param {ASTNode} node - A function node to check.
+ * @param {ASTNode} node A function node to check.
* @returns {void}
*/
function checkForFunction(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js
index 9de2f4ed73..6ddb21c9e1 100644
--- a/tools/node_modules/eslint/lib/rules/no-redeclare.js
+++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js
@@ -86,7 +86,7 @@ module.exports = {
/**
* Find variables in a given scope and flag redeclared ones.
- * @param {Scope} scope - An eslint-scope scope object.
+ * @param {Scope} scope An eslint-scope scope object.
* @returns {void}
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
index 41f5e149df..7581e9271f 100644
--- a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
+++ b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
@@ -52,7 +52,6 @@ module.exports = {
/**
* Validate regular expression
- *
* @param {ASTNode} nodeToReport Node to report.
* @param {string} pattern Regular expression pattern to validate.
* @param {string} rawPattern Raw representation of the pattern in the source code.
diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-imports.js b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js
index 6f3d2158c8..bed9c2432a 100644
--- a/tools/node_modules/eslint/lib/rules/no-restricted-imports.js
+++ b/tools/node_modules/eslint/lib/rules/no-restricted-imports.js
@@ -116,7 +116,7 @@ module.exports = {
/**
* Checks to see if "*" is being used to import everything.
- * @param {Set.<string>} importNames - Set of import names that are being imported
+ * @param {Set.<string>} importNames Set of import names that are being imported
* @returns {boolean} whether everything is imported or not
*/
function isEverythingImported(importNames) {
@@ -145,7 +145,7 @@ module.exports = {
/**
* Report a restricted path specifically for patterns.
- * @param {node} node - representing the restricted path reference
+ * @param {node} node representing the restricted path reference
* @returns {void}
* @private
*/
@@ -163,8 +163,8 @@ module.exports = {
/**
* Report a restricted path specifically when using the '*' import.
- * @param {string} importSource - path of the import
- * @param {node} node - representing the restricted path reference
+ * @param {string} importSource path of the import
+ * @param {node} node representing the restricted path reference
* @returns {void}
* @private
*/
@@ -185,8 +185,8 @@ module.exports = {
/**
* Check if the given importSource is restricted because '*' is being imported.
- * @param {string} importSource - path of the import
- * @param {Set.<string>} importNames - Set of import names that are being imported
+ * @param {string} importSource path of the import
+ * @param {Set.<string>} importNames Set of import names that are being imported
* @returns {boolean} whether the path is restricted
* @private
*/
@@ -198,8 +198,8 @@ module.exports = {
/**
* Check if the given importNames are restricted given a list of restrictedImportNames.
- * @param {Set.<string>} importNames - Set of import names that are being imported
- * @param {string[]} restrictedImportNames - array of import names that are restricted for this import
+ * @param {Set.<string>} importNames Set of import names that are being imported
+ * @param {string[]} restrictedImportNames array of import names that are restricted for this import
* @returns {boolean} whether the objectName is restricted
* @private
*/
@@ -211,8 +211,8 @@ module.exports = {
/**
* Check if the given importSource is a restricted path.
- * @param {string} importSource - path of the import
- * @param {Set.<string>} importNames - Set of import names that are being imported
+ * @param {string} importSource path of the import
+ * @param {Set.<string>} importNames Set of import names that are being imported
* @returns {boolean} whether the variable is a restricted path or not
* @private
*/
@@ -232,7 +232,7 @@ module.exports = {
/**
* Check if the given importSource is restricted by a pattern.
- * @param {string} importSource - path of the import
+ * @param {string} importSource path of the import
* @returns {boolean} whether the variable is a restricted pattern or not
* @private
*/
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 6ebd1925e4..705d0f409c 100644
--- a/tools/node_modules/eslint/lib/rules/no-self-assign.js
+++ b/tools/node_modules/eslint/lib/rules/no-self-assign.js
@@ -20,9 +20,8 @@ const SPACES = /\s+/gu;
/**
* Checks whether the property of 2 given member expression nodes are the same
* property or not.
- *
- * @param {ASTNode} left - A member expression node to check.
- * @param {ASTNode} right - Another member expression node to check.
+ * @param {ASTNode} left A member expression node to check.
+ * @param {ASTNode} right Another member expression node to check.
* @returns {boolean} `true` if the member expressions have the same property.
*/
function isSameProperty(left, right) {
@@ -43,9 +42,8 @@ function isSameProperty(left, right) {
/**
* Checks whether 2 given member expression nodes are the reference to the same
* property or not.
- *
- * @param {ASTNode} left - A member expression node to check.
- * @param {ASTNode} right - Another member expression node to check.
+ * @param {ASTNode} left A member expression node to check.
+ * @param {ASTNode} right Another member expression node to check.
* @returns {boolean} `true` if the member expressions are the reference to the
* same property or not.
*/
@@ -63,18 +61,20 @@ function isSameMember(left, right) {
if (lobj.type === "MemberExpression") {
return isSameMember(lobj, robj);
}
+ if (lobj.type === "ThisExpression") {
+ return true;
+ }
return lobj.type === "Identifier" && lobj.name === robj.name;
}
/**
* Traverses 2 Pattern nodes in parallel, then reports self-assignments.
- *
- * @param {ASTNode|null} left - A left node to traverse. This is a Pattern or
+ * @param {ASTNode|null} left A left node to traverse. This is a Pattern or
* a Property.
- * @param {ASTNode|null} right - A right node to traverse. This is a Pattern or
+ * @param {ASTNode|null} right A right node to traverse. This is a Pattern or
* a Property.
- * @param {boolean} props - The flag to check member expressions as well.
- * @param {Function} report - A callback function to report.
+ * @param {boolean} props The flag to check member expressions as well.
+ * @param {Function} report A callback function to report.
* @returns {void}
*/
function eachSelfAssignment(left, right, props, report) {
@@ -205,8 +205,7 @@ module.exports = {
/**
* Reports a given node as self assignments.
- *
- * @param {ASTNode} node - A node to report. This is an Identifier node.
+ * @param {ASTNode} node A node to report. This is an Identifier node.
* @returns {void}
*/
function report(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-sequences.js b/tools/node_modules/eslint/lib/rules/no-sequences.js
index 39d147b69b..8046a8711a 100644
--- a/tools/node_modules/eslint/lib/rules/no-sequences.js
+++ b/tools/node_modules/eslint/lib/rules/no-sequences.js
@@ -54,7 +54,7 @@ module.exports = {
/**
* Determines whether a node is required by the grammar to be wrapped in
* parens, e.g. the test of an if statement.
- * @param {ASTNode} node - The AST node
+ * @param {ASTNode} node The AST node
* @returns {boolean} True if parens around node belong to parent node.
*/
function requiresExtraParens(node) {
@@ -64,7 +64,7 @@ module.exports = {
/**
* Check if a node is wrapped in parens.
- * @param {ASTNode} node - The AST node
+ * @param {ASTNode} node The AST node
* @returns {boolean} True if the node has a paren on each side.
*/
function isParenthesised(node) {
@@ -73,7 +73,7 @@ module.exports = {
/**
* Check if a node is wrapped in two levels of parens.
- * @param {ASTNode} node - The AST node
+ * @param {ASTNode} node The AST node
* @returns {boolean} True if two parens surround the node on each side.
*/
function isParenthesisedTwice(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js
index 1993d60078..bad6cb5f30 100644
--- a/tools/node_modules/eslint/lib/rules/no-shadow.js
+++ b/tools/node_modules/eslint/lib/rules/no-shadow.js
@@ -54,7 +54,6 @@ module.exports = {
/**
* Check if variable name is allowed.
- *
* @param {ASTNode} variable The variable to check.
* @returns {boolean} Whether or not the variable name is allowed.
*/
@@ -67,7 +66,6 @@ module.exports = {
*
* ClassDeclaration creates two variables of its name into its outer scope and its class scope.
* So we should ignore the variable in the class scope.
- *
* @param {Object} variable The variable to check.
* @returns {boolean} Whether or not the variable of the class name in the class scope of ClassDeclaration.
*/
@@ -82,7 +80,6 @@ module.exports = {
*
* To avoid reporting at declarations such as `var a = function a() {};`.
* But it should report `var a = function(a) {};` or `var a = function() { function a() {} };`.
- *
* @param {Object} variable The variable to check.
* @param {Object} scopeVar The scope variable to look for.
* @returns {boolean} Whether or not the variable is inside initializer of scopeVar.
@@ -139,7 +136,7 @@ module.exports = {
/**
* Checks the current context for shadowed variables.
- * @param {Scope} scope - Fixme
+ * @param {Scope} scope Fixme
* @returns {void}
*/
function checkForShadows(scope) {
diff --git a/tools/node_modules/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js
index 0c0a220110..3fc0b78b6e 100644
--- a/tools/node_modules/eslint/lib/rules/no-tabs.js
+++ b/tools/node_modules/eslint/lib/rules/no-tabs.js
@@ -55,8 +55,14 @@ module.exports = {
context.report({
node,
loc: {
- line: index + 1,
- column: match.index
+ start: {
+ line: index + 1,
+ column: match.index
+ },
+ end: {
+ line: index + 1,
+ column: match.index + match[0].length
+ }
},
message: "Unexpected tab character."
});
diff --git a/tools/node_modules/eslint/lib/rules/no-this-before-super.js b/tools/node_modules/eslint/lib/rules/no-this-before-super.js
index b271797240..6975ea060b 100644
--- a/tools/node_modules/eslint/lib/rules/no-this-before-super.js
+++ b/tools/node_modules/eslint/lib/rules/no-this-before-super.js
@@ -17,7 +17,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a given node is a constructor.
- * @param {ASTNode} node - A node to check. This node type is one of
+ * @param {ASTNode} node A node to check. This node type is one of
* `Program`, `FunctionDeclaration`, `FunctionExpression`, and
* `ArrowFunctionExpression`.
* @returns {boolean} `true` if the node is a constructor.
@@ -71,7 +71,7 @@ module.exports = {
/**
* Gets whether or not `super()` is called in a given code path segment.
- * @param {CodePathSegment} segment - A code path segment to get.
+ * @param {CodePathSegment} segment A code path segment to get.
* @returns {boolean} `true` if `super()` is called.
*/
function isCalled(segment) {
@@ -99,7 +99,7 @@ module.exports = {
/**
* Sets a given node as invalid.
- * @param {ASTNode} node - A node to set as invalid. This is one of
+ * @param {ASTNode} node A node to set as invalid. This is one of
* a ThisExpression and a Super.
* @returns {void}
*/
@@ -135,8 +135,8 @@ module.exports = {
/**
* Adds information of a constructor into the stack.
- * @param {CodePath} codePath - A code path which was started.
- * @param {ASTNode} node - The current node.
+ * @param {CodePath} codePath A code path which was started.
+ * @param {ASTNode} node The current node.
* @returns {void}
*/
onCodePathStart(codePath, node) {
@@ -169,8 +169,7 @@ module.exports = {
*
* And this treverses all segments of this code path then reports every
* invalid node.
- *
- * @param {CodePath} codePath - A code path which was ended.
+ * @param {CodePath} codePath A code path which was ended.
* @returns {void}
*/
onCodePathEnd(codePath) {
@@ -204,7 +203,7 @@ module.exports = {
/**
* Initialize information of a given code path segment.
- * @param {CodePathSegment} segment - A code path segment to initialize.
+ * @param {CodePathSegment} segment A code path segment to initialize.
* @returns {void}
*/
onCodePathSegmentStart(segment) {
@@ -225,9 +224,9 @@ module.exports = {
/**
* Update information of the code path segment when a code path was
* looped.
- * @param {CodePathSegment} fromSegment - The code path segment of the
+ * @param {CodePathSegment} fromSegment The code path segment of the
* end of a loop.
- * @param {CodePathSegment} toSegment - A code path segment of the head
+ * @param {CodePathSegment} toSegment A code path segment of the head
* of a loop.
* @returns {void}
*/
@@ -258,7 +257,7 @@ module.exports = {
/**
* Reports if this is before `super()`.
- * @param {ASTNode} node - A target node.
+ * @param {ASTNode} node A target node.
* @returns {void}
*/
ThisExpression(node) {
@@ -269,7 +268,7 @@ module.exports = {
/**
* Reports if this is before `super()`.
- * @param {ASTNode} node - A target node.
+ * @param {ASTNode} node A target node.
* @returns {void}
*/
Super(node) {
@@ -280,7 +279,7 @@ module.exports = {
/**
* Marks `super()` called.
- * @param {ASTNode} node - A target node.
+ * @param {ASTNode} node A target node.
* @returns {void}
*/
"CallExpression:exit"(node) {
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 83c01d5e7e..3a4124f4c0 100644
--- a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js
+++ b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js
@@ -90,7 +90,11 @@ module.exports = {
const lines = new Set();
comments.forEach(comment => {
- for (let i = comment.loc.start.line; i <= comment.loc.end.line; i++) {
+ const endLine = comment.type === "Block"
+ ? comment.loc.end.line - 1
+ : comment.loc.end.line;
+
+ for (let i = comment.loc.start.line; i <= endLine; i++) {
lines.add(i);
}
});
@@ -122,7 +126,7 @@ module.exports = {
fixRange = [];
for (let i = 0, ii = lines.length; i < ii; i++) {
- const matches = re.exec(lines[i]);
+ const lineNumber = i + 1;
/*
* Always add linebreak length to line length to accommodate for line break (\n or \r\n)
@@ -132,14 +136,22 @@ module.exports = {
const linebreakLength = linebreaks && linebreaks[i] ? linebreaks[i].length : 1;
const lineLength = lines[i].length + linebreakLength;
+ const matches = re.exec(lines[i]);
+
if (matches) {
const location = {
- line: i + 1,
- column: matches.index
+ start: {
+ line: lineNumber,
+ column: matches.index
+ },
+ end: {
+ line: lineNumber,
+ column: lineLength - linebreakLength
+ }
};
- const rangeStart = totalLength + location.column;
- const rangeEnd = totalLength + lineLength - linebreakLength;
+ const rangeStart = totalLength + location.start.column;
+ const rangeEnd = totalLength + location.end.column;
const containingNode = sourceCode.getNodeByRangeIndex(rangeStart);
if (containingNode && containingNode.type === "TemplateElement" &&
@@ -160,7 +172,7 @@ module.exports = {
fixRange = [rangeStart, rangeEnd];
- if (!ignoreComments || !commentLineNumbers.has(location.line)) {
+ if (!ignoreComments || !commentLineNumbers.has(lineNumber)) {
report(node, location, fixRange);
}
}
diff --git a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
index 85292d136e..3b8e7417d5 100644
--- a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
+++ b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
@@ -35,8 +35,7 @@ const DYNAMIC_PATTERN = /^(?:Call|Member|New|TaggedTemplate|Yield)Expression$/u;
/**
* Checks whether or not a given reference is a write reference.
- *
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is a write reference.
*/
function isWriteReference(reference) {
@@ -53,8 +52,7 @@ function isWriteReference(reference) {
/**
* Checks whether or not a given loop condition info does not have the modified
* flag.
- *
- * @param {LoopConditionInfo} condition - A loop condition info to check.
+ * @param {LoopConditionInfo} condition A loop condition info to check.
* @returns {boolean} `true` if the loop condition info is "unmodified".
*/
function isUnmodified(condition) {
@@ -64,8 +62,7 @@ function isUnmodified(condition) {
/**
* Checks whether or not a given loop condition info does not have the modified
* flag and does not have the group this condition belongs to.
- *
- * @param {LoopConditionInfo} condition - A loop condition info to check.
+ * @param {LoopConditionInfo} condition A loop condition info to check.
* @returns {boolean} `true` if the loop condition info is "unmodified".
*/
function isUnmodifiedAndNotBelongToGroup(condition) {
@@ -74,9 +71,8 @@ function isUnmodifiedAndNotBelongToGroup(condition) {
/**
* Checks whether or not a given reference is inside of a given node.
- *
- * @param {ASTNode} node - A node to check.
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {ASTNode} node A node to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is inside of the node.
*/
function isInRange(node, reference) {
@@ -88,9 +84,8 @@ function isInRange(node, reference) {
/**
* Checks whether or not a given reference is inside of a loop node's condition.
- *
- * @param {ASTNode} node - A node to check.
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {ASTNode} node A node to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is inside of the loop node's
* condition.
*/
@@ -108,8 +103,7 @@ const isInLoop = {
/**
* Gets the function which encloses a given reference.
* This supports only FunctionDeclaration.
- *
- * @param {eslint-scope.Reference} reference - A reference to get.
+ * @param {eslint-scope.Reference} reference A reference to get.
* @returns {ASTNode|null} The function node or null.
*/
function getEncloseFunctionDeclaration(reference) {
@@ -128,9 +122,8 @@ function getEncloseFunctionDeclaration(reference) {
/**
* Updates the "modified" flags of given loop conditions with given modifiers.
- *
- * @param {LoopConditionInfo[]} conditions - The loop conditions to be updated.
- * @param {eslint-scope.Reference[]} modifiers - The references to update.
+ * @param {LoopConditionInfo[]} conditions The loop conditions to be updated.
+ * @param {eslint-scope.Reference[]} modifiers The references to update.
* @returns {void}
*/
function updateModifiedFlag(conditions, modifiers) {
@@ -183,8 +176,7 @@ module.exports = {
/**
* Reports a given condition info.
- *
- * @param {LoopConditionInfo} condition - A loop condition info to report.
+ * @param {LoopConditionInfo} condition A loop condition info to report.
* @returns {void}
*/
function report(condition) {
@@ -199,8 +191,7 @@ module.exports = {
/**
* Registers given conditions to the group the condition belongs to.
- *
- * @param {LoopConditionInfo[]} conditions - A loop condition info to
+ * @param {LoopConditionInfo[]} conditions A loop condition info to
* register.
* @returns {void}
*/
@@ -222,8 +213,7 @@ module.exports = {
/**
* Reports references which are inside of unmodified groups.
- *
- * @param {LoopConditionInfo[]} conditions - A loop condition info to report.
+ * @param {LoopConditionInfo[]} conditions A loop condition info to report.
* @returns {void}
*/
function checkConditionsInGroup(conditions) {
@@ -234,8 +224,7 @@ module.exports = {
/**
* Checks whether or not a given group node has any dynamic elements.
- *
- * @param {ASTNode} root - A node to check.
+ * @param {ASTNode} root A node to check.
* This node is one of BinaryExpression or ConditionalExpression.
* @returns {boolean} `true` if the node is dynamic.
*/
@@ -259,8 +248,7 @@ module.exports = {
/**
* Creates the loop condition information from a given reference.
- *
- * @param {eslint-scope.Reference} reference - A reference to create.
+ * @param {eslint-scope.Reference} reference A reference to create.
* @returns {LoopConditionInfo|null} Created loop condition info, or null.
*/
function toLoopCondition(reference) {
@@ -313,8 +301,7 @@ module.exports = {
/**
* Finds unmodified references which are inside of a loop condition.
* Then reports the references which are outside of groups.
- *
- * @param {eslint-scope.Variable} variable - A variable to report.
+ * @param {eslint-scope.Variable} variable A variable to report.
* @returns {void}
*/
function checkReferences(variable) {
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 331c9ce94d..893baa34f7 100644
--- a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js
+++ b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js
@@ -57,7 +57,7 @@ module.exports = {
/**
* Test if the node is a boolean literal
- * @param {ASTNode} node - The node to report.
+ * @param {ASTNode} node The node to report.
* @returns {boolean} True if the its a boolean literal
* @private
*/
@@ -91,7 +91,7 @@ module.exports = {
/**
* Tests if a given node always evaluates to a boolean value
- * @param {ASTNode} node - An expression node
+ * @param {ASTNode} node An expression node
* @returns {boolean} True if it is determined that the node will always evaluate to a boolean value
*/
function isBooleanExpression(node) {
@@ -101,7 +101,7 @@ module.exports = {
/**
* Test if the node matches the pattern id ? id : expression
- * @param {ASTNode} node - The ConditionalExpression to check.
+ * @param {ASTNode} node The ConditionalExpression to check.
* @returns {boolean} True if the pattern is matched, and false otherwise
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/no-unreachable.js b/tools/node_modules/eslint/lib/rules/no-unreachable.js
index 8ea2583f7c..91c4ca7150 100644
--- a/tools/node_modules/eslint/lib/rules/no-unreachable.js
+++ b/tools/node_modules/eslint/lib/rules/no-unreachable.js
@@ -10,7 +10,7 @@
/**
* Checks whether or not a given variable declarator has the initializer.
- * @param {ASTNode} node - A VariableDeclarator node to check.
+ * @param {ASTNode} node A VariableDeclarator node to check.
* @returns {boolean} `true` if the node has the initializer.
*/
function isInitialized(node) {
@@ -19,7 +19,7 @@ function isInitialized(node) {
/**
* Checks whether or not a given code path segment is unreachable.
- * @param {CodePathSegment} segment - A CodePathSegment to check.
+ * @param {CodePathSegment} segment A CodePathSegment to check.
* @returns {boolean} `true` if the segment is unreachable.
*/
function isUnreachable(segment) {
@@ -57,7 +57,7 @@ class ConsecutiveRange {
/**
* Checks whether the given node is inside of this range.
- * @param {ASTNode|Token} node - The node to check.
+ * @param {ASTNode|Token} node The node to check.
* @returns {boolean} `true` if the node is inside of this range.
*/
contains(node) {
@@ -69,7 +69,7 @@ class ConsecutiveRange {
/**
* Checks whether the given node is consecutive to this range.
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} `true` if the node is consecutive to this range.
*/
isConsecutive(node) {
@@ -78,7 +78,7 @@ class ConsecutiveRange {
/**
* Merges the given node to this range.
- * @param {ASTNode} node - The node to merge.
+ * @param {ASTNode} node The node to merge.
* @returns {void}
*/
merge(node) {
@@ -87,7 +87,7 @@ class ConsecutiveRange {
/**
* Resets this range by the given node or null.
- * @param {ASTNode|null} node - The node to reset, or null.
+ * @param {ASTNode|null} node The node to reset, or null.
* @returns {void}
*/
reset(node) {
@@ -120,7 +120,7 @@ module.exports = {
/**
* Reports a given node if it's unreachable.
- * @param {ASTNode} node - A statement node to report.
+ * @param {ASTNode} node A statement node to report.
* @returns {void}
*/
function reportIfUnreachable(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js
index 4daa63b692..a41dff9c80 100644
--- a/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js
+++ b/tools/node_modules/eslint/lib/rules/no-unsafe-finally.js
@@ -35,8 +35,7 @@ module.exports = {
/**
* Checks if the node is the finalizer of a TryStatement
- *
- * @param {ASTNode} node - node to check.
+ * @param {ASTNode} node node to check.
* @returns {boolean} - true if the node is the finalizer of a TryStatement
*/
function isFinallyBlock(node) {
@@ -45,9 +44,8 @@ module.exports = {
/**
* Climbs up the tree if the node is not a sentinel node
- *
- * @param {ASTNode} node - node to check.
- * @param {string} label - label of the break or continue statement
+ * @param {ASTNode} node node to check.
+ * @param {string} label label of the break or continue statement
* @returns {boolean} - return whether the node is a finally block or a sentinel node
*/
function isInFinallyBlock(node, label) {
@@ -82,8 +80,7 @@ module.exports = {
/**
* Checks whether the possibly-unsafe statement is inside a finally block.
- *
- * @param {ASTNode} node - node to check.
+ * @param {ASTNode} node node to check.
* @returns {void}
*/
function check(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js
index 717e5f6be3..5c8f569d7b 100644
--- a/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js
+++ b/tools/node_modules/eslint/lib/rules/no-unsafe-negation.js
@@ -16,19 +16,26 @@ const astUtils = require("./utils/ast-utils");
//------------------------------------------------------------------------------
/**
- * Checks whether the given operator is a relational operator or not.
- *
- * @param {string} op - The operator type to check.
- * @returns {boolean} `true` if the operator is a relational operator.
+ * Checks whether the given operator is `in` or `instanceof`
+ * @param {string} op The operator type to check.
+ * @returns {boolean} `true` if the operator is `in` or `instanceof`
*/
-function isRelationalOperator(op) {
+function isInOrInstanceOfOperator(op) {
return op === "in" || op === "instanceof";
}
/**
+ * Checks whether the given operator is an ordering relational operator or not.
+ * @param {string} op The operator type to check.
+ * @returns {boolean} `true` if the operator is an ordering relational operator.
+ */
+function isOrderingRelationalOperator(op) {
+ return op === "<" || op === ">" || op === ">=" || op === "<=";
+}
+
+/**
* Checks whether the given node is a logical negation expression or not.
- *
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} `true` if the node is a logical negation expression.
*/
function isNegation(node) {
@@ -50,7 +57,18 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-unsafe-negation"
},
- schema: [],
+ schema: [
+ {
+ type: "object",
+ properties: {
+ enforceForOrderingRelations: {
+ type: "boolean",
+ default: false
+ }
+ },
+ additionalProperties: false
+ }
+ ],
fixable: null,
messages: {
unexpected: "Unexpected negating the left operand of '{{operator}}' operator."
@@ -59,10 +77,15 @@ module.exports = {
create(context) {
const sourceCode = context.getSourceCode();
+ const options = context.options[0] || {};
+ const enforceForOrderingRelations = options.enforceForOrderingRelations === true;
return {
BinaryExpression(node) {
- if (isRelationalOperator(node.operator) &&
+ const orderingRelationRuleApplies = enforceForOrderingRelations && isOrderingRelationalOperator(node.operator);
+
+ if (
+ (isInOrInstanceOfOperator(node.operator) || orderingRelationRuleApplies) &&
isNegation(node.left) &&
!astUtils.isParenthesised(sourceCode, node.left)
) {
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 02cce309ee..fd0440256b 100644
--- a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js
+++ b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js
@@ -47,8 +47,9 @@ module.exports = {
allowTernary = config.allowTernary || false,
allowTaggedTemplates = config.allowTaggedTemplates || false;
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {ASTNode} node - any node
+ * @param {ASTNode} node any node
* @returns {boolean} whether the given node structurally represents a directive
*/
function looksLikeDirective(node) {
@@ -56,9 +57,10 @@ module.exports = {
node.expression.type === "Literal" && typeof node.expression.value === "string";
}
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {Function} predicate - ([a] -> Boolean) the function used to make the determination
- * @param {a[]} list - the input list
+ * @param {Function} predicate ([a] -> Boolean) the function used to make the determination
+ * @param {a[]} list the input list
* @returns {a[]} the leading sequence of members in the given list that pass the given predicate
*/
function takeWhile(predicate, list) {
@@ -70,17 +72,19 @@ module.exports = {
return list.slice();
}
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {ASTNode} node - a Program or BlockStatement node
+ * @param {ASTNode} node a Program or BlockStatement node
* @returns {ASTNode[]} the leading sequence of directive nodes in the given node's body
*/
function directives(node) {
return takeWhile(looksLikeDirective, node.body);
}
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {ASTNode} node - any node
- * @param {ASTNode[]} ancestors - the given node's ancestors
+ * @param {ASTNode} node any node
+ * @param {ASTNode[]} ancestors the given node's ancestors
* @returns {boolean} whether the given node is considered a directive in its current position
*/
function isDirective(node, ancestors) {
@@ -94,7 +98,7 @@ module.exports = {
/**
* Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
- * @param {ASTNode} node - any node
+ * @param {ASTNode} node any node
* @returns {boolean} whether the given node is a valid expression
*/
function isValidExpression(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-unused-labels.js b/tools/node_modules/eslint/lib/rules/no-unused-labels.js
index 1ba1d05d5c..b33fcb7867 100644
--- a/tools/node_modules/eslint/lib/rules/no-unused-labels.js
+++ b/tools/node_modules/eslint/lib/rules/no-unused-labels.js
@@ -35,8 +35,7 @@ module.exports = {
/**
* Adds a scope info to the stack.
- *
- * @param {ASTNode} node - A node to add. This is a LabeledStatement.
+ * @param {ASTNode} node A node to add. This is a LabeledStatement.
* @returns {void}
*/
function enterLabeledScope(node) {
@@ -50,8 +49,7 @@ module.exports = {
/**
* Removes the top of the stack.
* At the same time, this reports the label if it's never used.
- *
- * @param {ASTNode} node - A node to report. This is a LabeledStatement.
+ * @param {ASTNode} node A node to report. This is a LabeledStatement.
* @returns {void}
*/
function exitLabeledScope(node) {
@@ -81,8 +79,7 @@ module.exports = {
/**
* Marks the label of a given node as used.
- *
- * @param {ASTNode} node - A node to mark. This is a BreakStatement or
+ * @param {ASTNode} node A node to mark. This is a BreakStatement or
* ContinueStatement.
* @returns {void}
*/
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 8094de57c7..63e6e048ef 100644
--- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js
+++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js
@@ -103,7 +103,7 @@ module.exports = {
/**
* Generate the warning message about the variable being
* defined and unused, including the ignore pattern if configured.
- * @param {Variable} unusedVar - eslint-scope variable object.
+ * @param {Variable} unusedVar eslint-scope variable object.
* @returns {string} The warning message to be used with this unused variable.
*/
function getDefinedMessage(unusedVar) {
@@ -146,7 +146,7 @@ module.exports = {
/**
* Determines if a given variable is being exported from a module.
- * @param {Variable} variable - eslint-scope variable object.
+ * @param {Variable} variable eslint-scope variable object.
* @returns {boolean} True if the variable is exported, false if not.
* @private
*/
@@ -172,7 +172,7 @@ module.exports = {
/**
* Determines if a variable has a sibling rest property
- * @param {Variable} variable - eslint-scope variable object.
+ * @param {Variable} variable eslint-scope variable object.
* @returns {boolean} True if the variable is exported, false if not.
* @private
*/
@@ -195,7 +195,7 @@ module.exports = {
/**
* Determines if a reference is a read operation.
- * @param {Reference} ref - An eslint-scope Reference
+ * @param {Reference} ref An eslint-scope Reference
* @returns {boolean} whether the given reference represents a read operation
* @private
*/
@@ -205,8 +205,8 @@ module.exports = {
/**
* Determine if an identifier is referencing an enclosing function name.
- * @param {Reference} ref - The reference to check.
- * @param {ASTNode[]} nodes - The candidate function nodes.
+ * @param {Reference} ref The reference to check.
+ * @param {ASTNode[]} nodes The candidate function nodes.
* @returns {boolean} True if it's a self-reference, false if not.
* @private
*/
@@ -226,7 +226,7 @@ module.exports = {
/**
* Gets a list of function definitions for a specified variable.
- * @param {Variable} variable - eslint-scope variable object.
+ * @param {Variable} variable eslint-scope variable object.
* @returns {ASTNode[]} Function nodes.
* @private
*/
@@ -252,9 +252,8 @@ module.exports = {
/**
* Checks the position of given nodes.
- *
- * @param {ASTNode} inner - A node which is expected as inside.
- * @param {ASTNode} outer - A node which is expected as outside.
+ * @param {ASTNode} inner A node which is expected as inside.
+ * @param {ASTNode} outer A node which is expected as outside.
* @returns {boolean} `true` if the `inner` node exists in the `outer` node.
* @private
*/
@@ -275,9 +274,8 @@ module.exports = {
* - The reference is inside of a loop.
* - The reference is inside of a function scope which is different from
* the declaration.
- *
- * @param {eslint-scope.Reference} ref - A reference to check.
- * @param {ASTNode} prevRhsNode - The previous RHS node.
+ * @param {eslint-scope.Reference} ref A reference to check.
+ * @param {ASTNode} prevRhsNode The previous RHS node.
* @returns {ASTNode|null} The RHS node or null.
* @private
*/
@@ -310,9 +308,8 @@ module.exports = {
/**
* Checks whether a given function node is stored to somewhere or not.
* If the function node is stored, the function can be used later.
- *
- * @param {ASTNode} funcNode - A function node to check.
- * @param {ASTNode} rhsNode - The RHS node of the previous assignment.
+ * @param {ASTNode} funcNode A function node to check.
+ * @param {ASTNode} rhsNode The RHS node of the previous assignment.
* @returns {boolean} `true` if under the following conditions:
* - the funcNode is assigned to a variable.
* - the funcNode is bound as an argument of a function call.
@@ -367,9 +364,8 @@ module.exports = {
* - the function is bound as an argument of a function call.
*
* If a reference exists in a function which can be used later, the reference is read when the function is called.
- *
- * @param {ASTNode} id - An Identifier node to check.
- * @param {ASTNode} rhsNode - The RHS node of the previous assignment.
+ * @param {ASTNode} id An Identifier node to check.
+ * @param {ASTNode} rhsNode The RHS node of the previous assignment.
* @returns {boolean} `true` if the `id` node exists inside of a function node which can be used later.
* @private
*/
@@ -385,9 +381,8 @@ module.exports = {
/**
* Checks whether a given reference is a read to update itself or not.
- *
- * @param {eslint-scope.Reference} ref - A reference to check.
- * @param {ASTNode} rhsNode - The RHS node of the previous assignment.
+ * @param {eslint-scope.Reference} ref A reference to check.
+ * @param {ASTNode} rhsNode The RHS node of the previous assignment.
* @returns {boolean} The reference is a read to update itself.
* @private
*/
@@ -416,8 +411,7 @@ module.exports = {
/**
* Determine if an identifier is used either in for-in loops.
- *
- * @param {Reference} ref - The reference to check.
+ * @param {Reference} ref The reference to check.
* @returns {boolean} whether reference is used in the for-in loops
* @private
*/
@@ -453,7 +447,7 @@ module.exports = {
/**
* Determines if the variable is used.
- * @param {Variable} variable - The variable to check.
+ * @param {Variable} variable The variable to check.
* @returns {boolean} True if the variable is used
* @private
*/
@@ -481,8 +475,7 @@ module.exports = {
/**
* Checks whether the given variable is after the last used parameter.
- *
- * @param {eslint-scope.Variable} variable - The variable to check.
+ * @param {eslint-scope.Variable} variable The variable to check.
* @returns {boolean} `true` if the variable is defined after the last
* used parameter.
*/
@@ -497,8 +490,8 @@ module.exports = {
/**
* Gets an array of variables without read references.
- * @param {Scope} scope - an eslint-scope Scope object.
- * @param {Variable[]} unusedVars - an array that saving result.
+ * @param {Scope} scope an eslint-scope Scope object.
+ * @param {Variable[]} unusedVars an array that saving result.
* @returns {Variable[]} unused variables of the scope and descendant scopes.
* @private
*/
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 a98f6c87ff..ed3540532f 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
@@ -14,8 +14,7 @@ const FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/u;
/**
* Parses a given value as options.
- *
- * @param {any} options - A value to parse.
+ * @param {any} options A value to parse.
* @returns {Object} The parsed options.
*/
function parseOptions(options) {
@@ -36,8 +35,7 @@ function parseOptions(options) {
/**
* Checks whether or not a given variable is a function declaration.
- *
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is a function declaration.
*/
function isFunction(variable) {
@@ -46,9 +44,8 @@ function isFunction(variable) {
/**
* Checks whether or not a given variable is a class declaration in an upper function scope.
- *
- * @param {eslint-scope.Variable} variable - A variable to check.
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the variable is a class declaration.
*/
function isOuterClass(variable, reference) {
@@ -60,8 +57,8 @@ function isOuterClass(variable, reference) {
/**
* Checks whether or not a given variable is a variable declaration in an upper function scope.
- * @param {eslint-scope.Variable} variable - A variable to check.
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the variable is a variable declaration.
*/
function isOuterVariable(variable, reference) {
@@ -73,9 +70,8 @@ function isOuterVariable(variable, reference) {
/**
* Checks whether or not a given location is inside of the range of a given node.
- *
- * @param {ASTNode} node - An node to check.
- * @param {number} location - A location to check.
+ * @param {ASTNode} node An node to check.
+ * @param {number} location A location to check.
* @returns {boolean} `true` if the location is inside of the range of the node.
*/
function isInRange(node, location) {
@@ -92,9 +88,8 @@ function isInRange(node, location) {
* var {a = a} = obj
* for (var a in a) {}
* for (var a of a) {}
- *
- * @param {Variable} variable - A variable to check.
- * @param {Reference} reference - A reference to check.
+ * @param {Variable} variable A variable to check.
+ * @param {Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is inside of the initializers.
*/
function isInInitializer(variable, reference) {
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-call.js b/tools/node_modules/eslint/lib/rules/no-useless-call.js
index d08b9cb8cb..11cf524d12 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-call.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-call.js
@@ -13,7 +13,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a node is a `.call()`/`.apply()`.
- * @param {ASTNode} node - A CallExpression node to check.
+ * @param {ASTNode} node A CallExpression node to check.
* @returns {boolean} Whether or not the node is a `.call()`/`.apply()`.
*/
function isCallOrNonVariadicApply(node) {
@@ -31,9 +31,9 @@ function isCallOrNonVariadicApply(node) {
/**
* Checks whether or not `thisArg` is not changed by `.call()`/`.apply()`.
- * @param {ASTNode|null} expectedThis - The node that is the owner of the applied function.
- * @param {ASTNode} thisArg - The node that is given to the first argument of the `.call()`/`.apply()`.
- * @param {SourceCode} sourceCode - The ESLint source code object.
+ * @param {ASTNode|null} expectedThis The node that is the owner of the applied function.
+ * @param {ASTNode} thisArg The node that is given to the first argument of the `.call()`/`.apply()`.
+ * @param {SourceCode} sourceCode The ESLint source code object.
* @returns {boolean} Whether or not `thisArg` is not changed by `.call()`/`.apply()`.
*/
function isValidThisArg(expectedThis, thisArg, sourceCode) {
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-concat.js b/tools/node_modules/eslint/lib/rules/no-useless-concat.js
index d26003f1e4..cdaca273eb 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-concat.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-concat.js
@@ -16,7 +16,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a given node is a concatenation.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a concatenation.
*/
function isConcatenation(node) {
@@ -25,7 +25,7 @@ function isConcatenation(node) {
/**
* Checks if the given token is a `+` token or not.
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a `+` token.
*/
function isConcatOperatorToken(token) {
@@ -34,7 +34,7 @@ function isConcatOperatorToken(token) {
/**
* Get's the right most node on the left side of a BinaryExpression with + operator.
- * @param {ASTNode} node - A BinaryExpression node to check.
+ * @param {ASTNode} node A BinaryExpression node to check.
* @returns {ASTNode} node
*/
function getLeft(node) {
@@ -48,7 +48,7 @@ function getLeft(node) {
/**
* Get's the left most node on the right side of a BinaryExpression with + operator.
- * @param {ASTNode} node - A BinaryExpression node to check.
+ * @param {ASTNode} node A BinaryExpression node to check.
* @returns {ASTNode} node
*/
function getRight(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-constructor.js b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js
index c10376450e..7cf033805f 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-constructor.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-constructor.js
@@ -10,8 +10,7 @@
/**
* Checks whether a given array of statements is a single call of `super`.
- *
- * @param {ASTNode[]} body - An array of statements to check.
+ * @param {ASTNode[]} body An array of statements to check.
* @returns {boolean} `true` if the body is a single call of `super`.
*/
function isSingleSuperCall(body) {
@@ -26,8 +25,7 @@ function isSingleSuperCall(body) {
/**
* Checks whether a given node is a pattern which doesn't have any side effects.
* Default parameters and Destructuring parameters can have side effects.
- *
- * @param {ASTNode} node - A pattern node.
+ * @param {ASTNode} node A pattern node.
* @returns {boolean} `true` if the node doesn't have any side effects.
*/
function isSimple(node) {
@@ -37,8 +35,7 @@ function isSimple(node) {
/**
* Checks whether a given array of expressions is `...arguments` or not.
* `super(...arguments)` passes all arguments through.
- *
- * @param {ASTNode[]} superArgs - An array of expressions to check.
+ * @param {ASTNode[]} superArgs An array of expressions to check.
* @returns {boolean} `true` if the superArgs is `...arguments`.
*/
function isSpreadArguments(superArgs) {
@@ -52,9 +49,8 @@ function isSpreadArguments(superArgs) {
/**
* Checks whether given 2 nodes are identifiers which have the same name or not.
- *
- * @param {ASTNode} ctorParam - A node to check.
- * @param {ASTNode} superArg - A node to check.
+ * @param {ASTNode} ctorParam A node to check.
+ * @param {ASTNode} superArg A node to check.
* @returns {boolean} `true` if the nodes are identifiers which have the same
* name.
*/
@@ -68,9 +64,8 @@ function isValidIdentifierPair(ctorParam, superArg) {
/**
* Checks whether given 2 nodes are a rest/spread pair which has the same values.
- *
- * @param {ASTNode} ctorParam - A node to check.
- * @param {ASTNode} superArg - A node to check.
+ * @param {ASTNode} ctorParam A node to check.
+ * @param {ASTNode} superArg A node to check.
* @returns {boolean} `true` if the nodes are a rest/spread pair which has the
* same values.
*/
@@ -84,9 +79,8 @@ function isValidRestSpreadPair(ctorParam, superArg) {
/**
* Checks whether given 2 nodes have the same value or not.
- *
- * @param {ASTNode} ctorParam - A node to check.
- * @param {ASTNode} superArg - A node to check.
+ * @param {ASTNode} ctorParam A node to check.
+ * @param {ASTNode} superArg A node to check.
* @returns {boolean} `true` if the nodes have the same value or not.
*/
function isValidPair(ctorParam, superArg) {
@@ -99,9 +93,8 @@ function isValidPair(ctorParam, superArg) {
/**
* Checks whether the parameters of a constructor and the arguments of `super()`
* have the same values or not.
- *
- * @param {ASTNode} ctorParams - The parameters of a constructor to check.
- * @param {ASTNode} superArgs - The arguments of `super()` to check.
+ * @param {ASTNode} ctorParams The parameters of a constructor to check.
+ * @param {ASTNode} superArgs The arguments of `super()` to check.
* @returns {boolean} `true` if those have the same values.
*/
function isPassingThrough(ctorParams, superArgs) {
@@ -120,9 +113,8 @@ function isPassingThrough(ctorParams, superArgs) {
/**
* Checks whether the constructor body is a redundant super call.
- *
- * @param {Array} body - constructor body content.
- * @param {Array} ctorParams - The params to check against super call.
+ * @param {Array} body constructor body content.
+ * @param {Array} ctorParams The params to check against super call.
* @returns {boolean} true if the construtor body is redundant
*/
function isRedundantSuperCall(body, ctorParams) {
@@ -158,7 +150,7 @@ module.exports = {
/**
* Checks whether a node is a redundant constructor
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {void}
*/
function checkForConstructor(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-escape.js b/tools/node_modules/eslint/lib/rules/no-useless-escape.js
index e161e4aced..ebfe4cba38 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-escape.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-escape.js
@@ -117,10 +117,9 @@ module.exports = {
/**
* Checks if the escape character in given string slice is unnecessary.
- *
* @private
- * @param {ASTNode} node - node to validate.
- * @param {string} match - string slice to validate.
+ * @param {ASTNode} node node to validate.
+ * @param {string} match string slice to validate.
* @returns {void}
*/
function validateString(node, match) {
@@ -156,8 +155,7 @@ module.exports = {
/**
* Checks if a node has an escape.
- *
- * @param {ASTNode} node - node to check.
+ * @param {ASTNode} node node to check.
* @returns {void}
*/
function check(node) {
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 f31459bd8a..eb570a3ef5 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-rename.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-rename.js
@@ -48,10 +48,10 @@ module.exports = {
/**
* Reports error for unnecessarily renamed assignments
- * @param {ASTNode} node - node to report
- * @param {ASTNode} initial - node with initial name value
- * @param {ASTNode} result - node with new name value
- * @param {string} type - the type of the offending node
+ * @param {ASTNode} node node to report
+ * @param {ASTNode} initial node with initial name value
+ * @param {ASTNode} result node with new name value
+ * @param {string} type the type of the offending node
* @returns {void}
*/
function reportError(node, initial, result, type) {
@@ -83,7 +83,7 @@ module.exports = {
/**
* Checks whether a destructured assignment is unnecessarily renamed
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {void}
*/
function checkDestructured(node) {
@@ -120,7 +120,7 @@ module.exports = {
/**
* Checks whether an import is unnecessarily renamed
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {void}
*/
function checkImport(node) {
@@ -136,7 +136,7 @@ module.exports = {
/**
* Checks whether an export is unnecessarily renamed
- * @param {ASTNode} node - node to check
+ * @param {ASTNode} node node to check
* @returns {void}
*/
function checkExport(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-useless-return.js b/tools/node_modules/eslint/lib/rules/no-useless-return.js
index 7b12e85091..942d4eede9 100644
--- a/tools/node_modules/eslint/lib/rules/no-useless-return.js
+++ b/tools/node_modules/eslint/lib/rules/no-useless-return.js
@@ -17,9 +17,8 @@ const astUtils = require("./utils/ast-utils"),
/**
* Removes the given element from the array.
- *
- * @param {Array} array - The source array to remove.
- * @param {any} element - The target item to remove.
+ * @param {Array} array The source array to remove.
+ * @param {any} element The target item to remove.
* @returns {void}
*/
function remove(array, element) {
@@ -32,8 +31,7 @@ function remove(array, element) {
/**
* Checks whether it can remove the given return statement or not.
- *
- * @param {ASTNode} node - The return statement node to check.
+ * @param {ASTNode} node The return statement node to check.
* @returns {boolean} `true` if the node is removeable.
*/
function isRemovable(node) {
@@ -42,8 +40,7 @@ function isRemovable(node) {
/**
* Checks whether the given return statement is in a `finally` block or not.
- *
- * @param {ASTNode} node - The return statement node to check.
+ * @param {ASTNode} node The return statement node to check.
* @returns {boolean} `true` if the node is in a `finally` block.
*/
function isInFinally(node) {
@@ -87,8 +84,7 @@ module.exports = {
/**
* Checks whether the given segment is terminated by a return statement or not.
- *
- * @param {CodePathSegment} segment - The segment to check.
+ * @param {CodePathSegment} segment The segment to check.
* @returns {boolean} `true` if the segment is terminated by a return statement, or if it's still a part of unreachable.
*/
function isReturned(segment) {
@@ -110,9 +106,8 @@ module.exports = {
*
* This behavior would simulate code paths for the case that the return
* statement does not exist.
- *
- * @param {ASTNode[]} uselessReturns - The collected return statements.
- * @param {CodePathSegment[]} prevSegments - The previous segments to traverse.
+ * @param {ASTNode[]} uselessReturns The collected return statements.
+ * @param {CodePathSegment[]} prevSegments The previous segments to traverse.
* @param {WeakSet<CodePathSegment>} [providedTraversedSegments] A set of segments that have already been traversed in this call
* @returns {ASTNode[]} `uselessReturns`.
*/
@@ -152,8 +147,7 @@ module.exports = {
*
* This behavior would simulate code paths for the case that the return
* statement does not exist.
- *
- * @param {CodePathSegment} segment - The segment to get return statements.
+ * @param {CodePathSegment} segment The segment to get return statements.
* @returns {void}
*/
function markReturnStatementsOnSegmentAsUsed(segment) {
@@ -184,7 +178,6 @@ module.exports = {
* - FunctionDeclarations are always executed whether it's returned or not.
* - BlockStatements do nothing.
* - BreakStatements go the next merely.
- *
* @returns {void}
*/
function markReturnStatementsOnCurrentSegmentsAsUsed() {
diff --git a/tools/node_modules/eslint/lib/rules/no-var.js b/tools/node_modules/eslint/lib/rules/no-var.js
index a3c750f901..74203f8bf3 100644
--- a/tools/node_modules/eslint/lib/rules/no-var.js
+++ b/tools/node_modules/eslint/lib/rules/no-var.js
@@ -27,8 +27,7 @@ function isGlobal(variable) {
/**
* Finds the nearest function scope or global scope walking up the scope
* hierarchy.
- *
- * @param {eslint-scope.Scope} scope - The scope to traverse.
+ * @param {eslint-scope.Scope} scope The scope to traverse.
* @returns {eslint-scope.Scope} a function scope or global scope containing the given
* scope.
*/
@@ -44,8 +43,7 @@ function getEnclosingFunctionScope(scope) {
/**
* Checks whether the given variable has any references from a more specific
* function expression (i.e. a closure).
- *
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is used from a closure.
*/
function isReferencedInClosure(variable) {
@@ -57,8 +55,7 @@ function isReferencedInClosure(variable) {
/**
* Checks whether the given node is the assignee of a loop.
- *
- * @param {ASTNode} node - A VariableDeclaration node to check.
+ * @param {ASTNode} node A VariableDeclaration node to check.
* @returns {boolean} `true` if the declaration is assigned as part of loop
* iteration.
*/
@@ -69,8 +66,7 @@ function isLoopAssignee(node) {
/**
* Checks whether the given variable declaration is immediately initialized.
- *
- * @param {ASTNode} node - A VariableDeclaration node to check.
+ * @param {ASTNode} node A VariableDeclaration node to check.
* @returns {boolean} `true` if the declaration has an initializer.
*/
function isDeclarationInitialized(node) {
@@ -81,8 +77,7 @@ const SCOPE_NODE_TYPE = /^(?:Program|BlockStatement|SwitchStatement|ForStatement
/**
* Gets the scope node which directly contains a given node.
- *
- * @param {ASTNode} node - A node to get. This is a `VariableDeclaration` or
+ * @param {ASTNode} node A node to get. This is a `VariableDeclaration` or
* an `Identifier`.
* @returns {ASTNode} A scope node. This is one of `Program`, `BlockStatement`,
* `SwitchStatement`, `ForStatement`, `ForInStatement`, and
@@ -101,8 +96,7 @@ function getScopeNode(node) {
/**
* Checks whether a given variable is redeclared or not.
- *
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is redeclared.
*/
function isRedeclared(variable) {
@@ -111,8 +105,7 @@ function isRedeclared(variable) {
/**
* Checks whether a given variable is used from outside of the specified scope.
- *
- * @param {ASTNode} scopeNode - A scope node to check.
+ * @param {ASTNode} scopeNode A scope node to check.
* @returns {Function} The predicate function which checks whether a given
* variable is used from outside of the specified scope.
*/
@@ -120,8 +113,7 @@ function isUsedFromOutsideOf(scopeNode) {
/**
* Checks whether a given reference is inside of the specified scope or not.
- *
- * @param {eslint-scope.Reference} reference - A reference to check.
+ * @param {eslint-scope.Reference} reference A reference to check.
* @returns {boolean} `true` if the reference is inside of the specified
* scope.
*/
@@ -145,8 +137,7 @@ function isUsedFromOutsideOf(scopeNode) {
* - if a reference is before the declarator. E.g. (var a = b, b = 1;)(var {a = b, b} = {};)
* - if a reference is in the expression of their default value. E.g. (var {a = a} = {};)
* - if a reference is in the expression of their initializer. E.g. (var a = a;)
- *
- * @param {ASTNode} node - The initializer node of VariableDeclarator.
+ * @param {ASTNode} node The initializer node of VariableDeclarator.
* @returns {Function} The predicate function.
* @private
*/
@@ -177,7 +168,6 @@ function hasReferenceInTDZ(node) {
/**
* Checks whether a given variable has name that is allowed for 'var' declarations,
* but disallowed for `let` declarations.
- *
* @param {eslint-scope.Variable} variable The variable to check.
* @returns {boolean} `true` if the variable has a disallowed name.
*/
@@ -209,8 +199,7 @@ module.exports = {
/**
* Checks whether the variables which are defined by the given declarator node have their references in TDZ.
- *
- * @param {ASTNode} declarator - The VariableDeclarator node to check.
+ * @param {ASTNode} declarator The VariableDeclarator node to check.
* @returns {boolean} `true` if one of the variables which are defined by the given declarator node have their references in TDZ.
*/
function hasSelfReferenceInTDZ(declarator) {
@@ -271,8 +260,7 @@ module.exports = {
* the implementation simple, we only convert `var` to `let` within
* loops when the variable is a loop assignee or the declaration has an
* initializer.
- *
- * @param {ASTNode} node - A variable declaration node to check.
+ * @param {ASTNode} node A variable declaration node to check.
* @returns {boolean} `true` if it can fix the node.
*/
function canFix(node) {
@@ -313,8 +301,7 @@ module.exports = {
/**
* Reports a given variable declaration node.
- *
- * @param {ASTNode} node - A variable declaration node to report.
+ * @param {ASTNode} node A variable declaration node to report.
* @returns {void}
*/
function report(node) {
diff --git a/tools/node_modules/eslint/lib/rules/no-warning-comments.js b/tools/node_modules/eslint/lib/rules/no-warning-comments.js
index 5a8e0bc7ec..a400c44676 100644
--- a/tools/node_modules/eslint/lib/rules/no-warning-comments.js
+++ b/tools/node_modules/eslint/lib/rules/no-warning-comments.js
@@ -54,7 +54,6 @@ module.exports = {
* Convert a warning term into a RegExp which will match a comment containing that whole word in the specified
* location ("start" or "anywhere"). If the term starts or ends with non word characters, then the match will not
* require word boundaries on that side.
- *
* @param {string} term A term to convert to a RegExp
* @returns {RegExp} The term converted to a RegExp
*/
diff --git a/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js b/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js
index 83ff801b2b..9541401a31 100644
--- a/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js
+++ b/tools/node_modules/eslint/lib/rules/no-whitespace-before-property.js
@@ -38,9 +38,9 @@ module.exports = {
/**
* Reports whitespace before property token
- * @param {ASTNode} node - the node to report in the event of an error
- * @param {Token} leftToken - the left token
- * @param {Token} rightToken - the right token
+ * @param {ASTNode} node the node to report in the event of an error
+ * @param {Token} leftToken the left token
+ * @param {Token} rightToken the right token
* @returns {void}
* @private
*/
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 be9ae23a6f..e870a69a95 100644
--- a/tools/node_modules/eslint/lib/rules/object-curly-newline.js
+++ b/tools/node_modules/eslint/lib/rules/object-curly-newline.js
@@ -44,8 +44,7 @@ const OPTION_VALUE = {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} value - An option value to parse.
+ * @param {string|Object|undefined} value An option value to parse.
* @returns {{multiline: boolean, minProperties: number, consistent: boolean}} Normalized option object.
*/
function normalizeOptionValue(value) {
@@ -72,8 +71,7 @@ function normalizeOptionValue(value) {
/**
* Normalizes a given option value.
- *
- * @param {string|Object|undefined} options - An option value to parse.
+ * @param {string|Object|undefined} options An option value to parse.
* @returns {{
* ObjectExpression: {multiline: boolean, minProperties: number, consistent: boolean},
* ObjectPattern: {multiline: boolean, minProperties: number, consistent: boolean},
@@ -101,11 +99,10 @@ function normalizeOptions(options) {
/**
* Determines if ObjectExpression, ObjectPattern, ImportDeclaration or ExportNamedDeclaration
* node needs to be checked for missing line breaks
- *
- * @param {ASTNode} node - Node under inspection
- * @param {Object} options - option specific to node type
- * @param {Token} first - First object property
- * @param {Token} last - Last object property
+ * @param {ASTNode} node Node under inspection
+ * @param {Object} options option specific to node type
+ * @param {Token} first First object property
+ * @param {Token} last Last object property
* @returns {boolean} `true` if node needs to be checked for missing line breaks
*/
function areLineBreaksRequired(node, options, first, last) {
@@ -171,7 +168,7 @@ module.exports = {
/**
* Reports a given node if it violated this rule.
- * @param {ASTNode} node - A node to check. This is an ObjectExpression, ObjectPattern, ImportDeclaration or ExportNamedDeclaration node.
+ * @param {ASTNode} node A node to check. This is an ObjectExpression, ObjectPattern, ImportDeclaration or ExportNamedDeclaration node.
* @returns {void}
*/
function check(node) {
diff --git a/tools/node_modules/eslint/lib/rules/object-curly-spacing.js b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js
index 48a7dd953b..53ddaaa24a 100644
--- a/tools/node_modules/eslint/lib/rules/object-curly-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/object-curly-spacing.js
@@ -50,7 +50,7 @@ module.exports = {
* Determines whether an option is set, relative to the spacing option.
* If spaced is "always", then check whether option is set to false.
* If spaced is "never", then check whether option is set to true.
- * @param {Object} option - The option to exclude.
+ * @param {Object} option The option to exclude.
* @returns {boolean} Whether or not the property is excluded.
*/
function isOptionSet(option) {
@@ -69,8 +69,8 @@ module.exports = {
/**
* Reports that there shouldn't be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoBeginningSpace(node, token) {
@@ -91,8 +91,8 @@ module.exports = {
/**
* Reports that there shouldn't be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportNoEndingSpace(node, token) {
@@ -113,8 +113,8 @@ module.exports = {
/**
* Reports that there should be a space after the first token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredBeginningSpace(node, token) {
@@ -133,8 +133,8 @@ module.exports = {
/**
* Reports that there should be a space before the last token
- * @param {ASTNode} node - The node to report in the event of an error.
- * @param {Token} token - The token to use for the report.
+ * @param {ASTNode} node The node to report in the event of an error.
+ * @param {Token} token The token to use for the report.
* @returns {void}
*/
function reportRequiredEndingSpace(node, token) {
@@ -201,8 +201,7 @@ module.exports = {
* Because the last token of object patterns might be a type annotation,
* this traverses tokens preceded by the last property, then returns the
* first '}' token.
- *
- * @param {ASTNode} node - The node to get. This node is an
+ * @param {ASTNode} node The node to get. This node is an
* ObjectExpression or an ObjectPattern. And this node has one or
* more properties.
* @returns {Token} '}' token.
@@ -215,7 +214,7 @@ module.exports = {
/**
* Reports a given object node if spacing in curly braces is invalid.
- * @param {ASTNode} node - An ObjectExpression or ObjectPattern node to check.
+ * @param {ASTNode} node An ObjectExpression or ObjectPattern node to check.
* @returns {void}
*/
function checkForObject(node) {
@@ -233,7 +232,7 @@ module.exports = {
/**
* Reports a given import node if spacing in curly braces is invalid.
- * @param {ASTNode} node - An ImportDeclaration node to check.
+ * @param {ASTNode} node An ImportDeclaration node to check.
* @returns {void}
*/
function checkForImport(node) {
@@ -261,7 +260,7 @@ module.exports = {
/**
* Reports a given export node if spacing in curly braces is invalid.
- * @param {ASTNode} node - An ExportNamedDeclaration node to check.
+ * @param {ASTNode} node An ExportNamedDeclaration node to check.
* @returns {void}
*/
function checkForExport(node) {
diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js
index df302b5e87..d4afd09c5a 100644
--- a/tools/node_modules/eslint/lib/rules/object-shorthand.js
+++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js
@@ -147,7 +147,7 @@ module.exports = {
/**
* Checks whether a node is a string literal.
- * @param {ASTNode} node - Any AST node.
+ * @param {ASTNode} node Any AST node.
* @returns {boolean} `true` if it is a string literal.
*/
function isStringLiteral(node) {
diff --git a/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js b/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js
index e7e40d66c0..b64656eefe 100644
--- a/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js
+++ b/tools/node_modules/eslint/lib/rules/one-var-declaration-per-line.js
@@ -41,7 +41,7 @@ module.exports = {
/**
* Determine if provided keyword is a variant of for specifiers
* @private
- * @param {string} keyword - keyword to test
+ * @param {string} keyword keyword to test
* @returns {boolean} True if `keyword` is a variant of for specifier
*/
function isForTypeSpecifier(keyword) {
@@ -51,7 +51,7 @@ module.exports = {
/**
* Checks newlines around variable declarations.
* @private
- * @param {ASTNode} node - `VariableDeclaration` node to test
+ * @param {ASTNode} node `VariableDeclaration` node to test
* @returns {void}
*/
function checkForNewLine(node) {
diff --git a/tools/node_modules/eslint/lib/rules/operator-assignment.js b/tools/node_modules/eslint/lib/rules/operator-assignment.js
index 63982cf392..e294668b42 100644
--- a/tools/node_modules/eslint/lib/rules/operator-assignment.js
+++ b/tools/node_modules/eslint/lib/rules/operator-assignment.js
@@ -150,6 +150,11 @@ module.exports = {
const leftText = sourceCode.getText().slice(node.range[0], equalsToken.range[0]);
const rightText = sourceCode.getText().slice(operatorToken.range[1], node.right.range[1]);
+ // Check for comments that would be removed.
+ if (sourceCode.commentsExistBetween(equalsToken, operatorToken)) {
+ return null;
+ }
+
return fixer.replaceText(node, `${leftText}${expr.operator}=${rightText}`);
}
return null;
@@ -182,11 +187,17 @@ module.exports = {
messageId: "unexpected",
fix(fixer) {
if (canBeFixed(node.left)) {
+ const firstToken = sourceCode.getFirstToken(node);
const operatorToken = getOperatorToken(node);
const leftText = sourceCode.getText().slice(node.range[0], operatorToken.range[0]);
const newOperator = node.operator.slice(0, -1);
let rightText;
+ // Check for comments that would be duplicated.
+ if (sourceCode.commentsExistBetween(firstToken, operatorToken)) {
+ return null;
+ }
+
// If this change would modify precedence (e.g. `foo *= bar + 1` => `foo = foo * (bar + 1)`), parenthesize the right side.
if (
astUtils.getPrecedence(node.right) <= astUtils.getPrecedence({ type: "BinaryExpression", operator: newOperator }) &&
@@ -194,7 +205,17 @@ module.exports = {
) {
rightText = `${sourceCode.text.slice(operatorToken.range[1], node.right.range[0])}(${sourceCode.getText(node.right)})`;
} else {
- rightText = sourceCode.text.slice(operatorToken.range[1], node.range[1]);
+ const firstRightToken = sourceCode.getFirstToken(node.right);
+ let rightTextPrefix = "";
+
+ if (
+ operatorToken.range[1] === firstRightToken.range[0] &&
+ !astUtils.canTokensBeAdjacent(newOperator, firstRightToken)
+ ) {
+ rightTextPrefix = " "; // foo+=+bar -> foo= foo+ +bar
+ }
+
+ rightText = `${rightTextPrefix}${sourceCode.text.slice(operatorToken.range[1], node.range[1])}`;
}
return fixer.replaceText(node, `${leftText}= ${leftText}${newOperator}${rightText}`);
diff --git a/tools/node_modules/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js
index d5bd5499c6..dafa88115e 100644
--- a/tools/node_modules/eslint/lib/rules/padded-blocks.js
+++ b/tools/node_modules/eslint/lib/rules/padded-blocks.js
@@ -97,7 +97,7 @@ module.exports = {
/**
* Gets the open brace token from a given node.
- * @param {ASTNode} node - A BlockStatement or SwitchStatement node from which to get the open brace.
+ * @param {ASTNode} node A BlockStatement or SwitchStatement node from which to get the open brace.
* @returns {Token} The token of the open brace.
*/
function getOpenBrace(node) {
diff --git a/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js b/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js
index d98cb1f247..350a9dbf2a 100644
--- a/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js
+++ b/tools/node_modules/eslint/lib/rules/padding-line-between-statements.js
@@ -25,7 +25,6 @@ const CJS_IMPORT = /^require\(/u;
/**
* Creates tester which check if a node starts with specific keyword.
- *
* @param {string} keyword The keyword to test.
* @returns {Object} the created tester.
* @private
@@ -39,7 +38,6 @@ function newKeywordTester(keyword) {
/**
* Creates tester which check if a node starts with specific keyword and spans a single line.
- *
* @param {string} keyword The keyword to test.
* @returns {Object} the created tester.
* @private
@@ -54,7 +52,6 @@ function newSinglelineKeywordTester(keyword) {
/**
* Creates tester which check if a node starts with specific keyword and spans multiple lines.
- *
* @param {string} keyword The keyword to test.
* @returns {Object} the created tester.
* @private
@@ -69,7 +66,6 @@ function newMultilineKeywordTester(keyword) {
/**
* Creates tester which check if a node is specific type.
- *
* @param {string} type The node type to test.
* @returns {Object} the created tester.
* @private
@@ -83,7 +79,6 @@ function newNodeTypeTester(type) {
/**
* Checks the given node is an expression statement of IIFE.
- *
* @param {ASTNode} node The node to check.
* @returns {boolean} `true` if the node is an expression statement of IIFE.
* @private
@@ -103,7 +98,6 @@ function isIIFEStatement(node) {
/**
* Checks whether the given node is a block-like statement.
* This checks the last token of the node is the closing brace of a block.
- *
* @param {SourceCode} sourceCode The source code to get tokens.
* @param {ASTNode} node The node to check.
* @returns {boolean} `true` if the node is a block-like statement.
@@ -187,7 +181,6 @@ function isDirectivePrologue(node, sourceCode) {
*
* foo()
* ;[1, 2, 3].forEach(bar)
- *
* @param {SourceCode} sourceCode The source code to get tokens.
* @param {ASTNode} node The node to get.
* @returns {Token} The actual last token.
@@ -224,7 +217,6 @@ function replacerToRemovePaddingLines(_, trailingSpaces, indentSpaces) {
/**
* Check and report statements for `any` configuration.
* It does nothing.
- *
* @returns {void}
* @private
*/
@@ -236,7 +228,6 @@ function verifyForAny() {
* This autofix removes blank lines between the given 2 statements.
* However, if comments exist between 2 blank lines, it does not remove those
* blank lines automatically.
- *
* @param {RuleContext} context The rule context to report.
* @param {ASTNode} _ Unused. The previous node to check.
* @param {ASTNode} nextNode The next node to check.
@@ -276,7 +267,6 @@ function verifyForNever(context, _, nextNode, paddingLines) {
* This autofix inserts a blank line between the given 2 statements.
* If the `prevNode` has trailing comments, it inserts a blank line after the
* trailing comments.
- *
* @param {RuleContext} context The rule context to report.
* @param {ASTNode} prevNode The previous node to check.
* @param {ASTNode} nextNode The next node to check.
@@ -318,7 +308,6 @@ function verifyForAlways(context, prevNode, nextNode, paddingLines) {
*
* // comment.
* bar();
- *
* @param {Token} token The token to check.
* @returns {boolean} `true` if the token is not a trailing comment.
* @private
@@ -511,7 +500,6 @@ module.exports = {
/**
* Checks whether the given node matches the given type.
- *
* @param {ASTNode} node The statement node to check.
* @param {string|string[]} type The statement type to check.
* @returns {boolean} `true` if the statement node matched the type.
@@ -531,7 +519,6 @@ module.exports = {
/**
* Finds the last matched configure from configureList.
- *
* @param {ASTNode} prevNode The previous statement to match.
* @param {ASTNode} nextNode The current statement to match.
* @returns {Object} The tester of the last matched configure.
@@ -554,7 +541,6 @@ module.exports = {
/**
* Gets padding line sequences between the given 2 statements.
* Comments are separators of the padding line sequences.
- *
* @param {ASTNode} prevNode The previous statement to count.
* @param {ASTNode} nextNode The current statement to count.
* @returns {Array<Token[]>} The array of token pairs.
@@ -584,7 +570,6 @@ module.exports = {
/**
* Verify padding lines between the given node and the previous node.
- *
* @param {ASTNode} node The node to verify.
* @returns {void}
* @private
@@ -616,7 +601,6 @@ module.exports = {
/**
* Verify padding lines between the given node and the previous node.
* Then process to enter to new scope.
- *
* @param {ASTNode} node The node to verify.
* @returns {void}
* @private
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 a0957399ea..08126e5b1a 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
@@ -11,7 +11,7 @@
/**
* Checks whether or not a given variable is a function name.
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is a function name.
*/
function isFunctionName(variable) {
@@ -20,9 +20,9 @@ function isFunctionName(variable) {
/**
* Checks whether or not a given MetaProperty node equals to a given value.
- * @param {ASTNode} node - A MetaProperty node to check.
- * @param {string} metaName - The name of `MetaProperty.meta`.
- * @param {string} propertyName - The name of `MetaProperty.property`.
+ * @param {ASTNode} node A MetaProperty node to check.
+ * @param {string} metaName The name of `MetaProperty.meta`.
+ * @param {string} propertyName The name of `MetaProperty.property`.
* @returns {boolean} `true` if the node is the specific value.
*/
function checkMetaProperty(node, metaName, propertyName) {
@@ -31,7 +31,7 @@ function checkMetaProperty(node, metaName, propertyName) {
/**
* Gets the variable object of `arguments` which is defined implicitly.
- * @param {eslint-scope.Scope} scope - A scope to get.
+ * @param {eslint-scope.Scope} scope A scope to get.
* @returns {eslint-scope.Variable} The found variable object.
*/
function getVariableOfArguments(scope) {
@@ -57,7 +57,7 @@ function getVariableOfArguments(scope) {
/**
* Checkes whether or not a given node is a callback.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {Object}
* {boolean} retv.isCallback - `true` if the node is a callback.
* {boolean} retv.isLexicalThis - `true` if the node is with `.bind(this)`.
diff --git a/tools/node_modules/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js
index 854da310e4..87f8389212 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-const.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-const.js
@@ -17,8 +17,7 @@ const DESTRUCTURING_HOST_TYPE = /^(?:VariableDeclarator|AssignmentExpression)$/u
/**
* Checks whether a given node is located at `ForStatement.init` or not.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is located at `ForStatement.init`.
*/
function isInitOfForStatement(node) {
@@ -27,8 +26,7 @@ function isInitOfForStatement(node) {
/**
* Checks whether a given Identifier node becomes a VariableDeclaration or not.
- *
- * @param {ASTNode} identifier - An Identifier node to check.
+ * @param {ASTNode} identifier An Identifier node to check.
* @returns {boolean} `true` if the node can become a VariableDeclaration.
*/
function canBecomeVariableDeclaration(identifier) {
@@ -51,9 +49,8 @@ function canBecomeVariableDeclaration(identifier) {
/**
* Checks if an property or element is from outer scope or function parameters
* in destructing pattern.
- *
- * @param {string} name - A variable name to be checked.
- * @param {eslint-scope.Scope} initScope - A scope to start find.
+ * @param {string} name A variable name to be checked.
+ * @param {eslint-scope.Scope} initScope A scope to start find.
* @returns {boolean} Indicates if the variable is from outer scope or function parameters.
*/
function isOuterVariableInDestructing(name, initScope) {
@@ -76,8 +73,7 @@ function isOuterVariableInDestructing(name, initScope) {
* belongs to.
* This is used to detect a mix of reassigned and never reassigned in a
* destructuring.
- *
- * @param {eslint-scope.Reference} reference - A reference to get.
+ * @param {eslint-scope.Reference} reference A reference to get.
* @returns {ASTNode|null} A VariableDeclarator/AssignmentExpression node or
* null.
*/
@@ -162,9 +158,8 @@ function hasMemberExpressionAssignment(node) {
* `/*exported foo` directive comment makes such variables. This rule does not
* warn such variables because this rule cannot distinguish whether the
* exported variables are reassigned or not.
- *
- * @param {eslint-scope.Variable} variable - A variable to get.
- * @param {boolean} ignoreReadBeforeAssign -
+ * @param {eslint-scope.Variable} variable A variable to get.
+ * @param {boolean} ignoreReadBeforeAssign
* The value of `ignoreReadBeforeAssign` option.
* @returns {ASTNode|null}
* An Identifier node if the variable should change to const.
@@ -262,9 +257,8 @@ function getIdentifierIfShouldBeConst(variable, ignoreReadBeforeAssign) {
* reference of given variables belongs to.
* This is used to detect a mix of reassigned and never reassigned in a
* destructuring.
- *
- * @param {eslint-scope.Variable[]} variables - Variables to group by destructuring.
- * @param {boolean} ignoreReadBeforeAssign -
+ * @param {eslint-scope.Variable[]} variables Variables to group by destructuring.
+ * @param {boolean} ignoreReadBeforeAssign
* The value of `ignoreReadBeforeAssign` option.
* @returns {Map<ASTNode, ASTNode[]>} Grouped identifier nodes.
*/
@@ -308,10 +302,9 @@ function groupByDestructuring(variables, ignoreReadBeforeAssign) {
/**
* Finds the nearest parent of node with a given type.
- *
- * @param {ASTNode} node – The node to search from.
- * @param {string} type – The type field of the parent node.
- * @param {Function} shouldStop – a predicate that returns true if the traversal should stop, and false otherwise.
+ * @param {ASTNode} node The node to search from.
+ * @param {string} type The type field of the parent node.
+ * @param {Function} shouldStop A predicate that returns true if the traversal should stop, and false otherwise.
* @returns {ASTNode} The closest ancestor with the specified type; null if no such ancestor exists.
*/
function findUp(node, type, shouldStop) {
@@ -374,8 +367,7 @@ module.exports = {
* nullable. In simple declaration or assignment cases, the length of
* the array is 1. In destructuring cases, the length of the array can
* be 2 or more.
- *
- * @param {(eslint-scope.Reference|null)[]} nodes -
+ * @param {(eslint-scope.Reference|null)[]} nodes
* References which are grouped by destructuring to report.
* @returns {void}
*/
diff --git a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
index dec93d51f2..eff37294a9 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js
@@ -103,6 +103,7 @@ module.exports = {
// Helpers
//--------------------------------------------------------------------------
+ // eslint-disable-next-line jsdoc/require-description
/**
* @param {string} nodeType "AssignmentExpression" or "VariableDeclarator"
* @param {string} destructuringType "array" or "object"
@@ -119,7 +120,6 @@ module.exports = {
*
* This is used to differentiate array index access from object property
* access.
- *
* @param {ASTNode} node the node to evaluate
* @returns {boolean} whether or not the node is an integer
*/
@@ -129,7 +129,6 @@ module.exports = {
/**
* Report that the given node should use destructuring
- *
* @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
@@ -153,7 +152,6 @@ module.exports = {
* 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
*/
@@ -168,7 +166,6 @@ module.exports = {
* 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
@@ -189,7 +186,6 @@ module.exports = {
*
* Pulled out into a separate method so that VariableDeclarators and
* AssignmentExpressions can share the same verification logic.
- *
* @param {ASTNode} leftNode the left-hand side of the assignment
* @param {ASTNode} rightNode the right-hand side of the assignment
* @param {ASTNode} reportNode the node to report the error on
@@ -231,7 +227,6 @@ module.exports = {
/**
* Check if a given variable declarator is coming from an property access
* that should be using destructuring instead
- *
* @param {ASTNode} node the variable declarator to check
* @returns {void}
*/
@@ -252,7 +247,6 @@ module.exports = {
/**
* Run the `prefer-destructuring` check on an AssignmentExpression
- *
* @param {ASTNode} node the AssignmentExpression node
* @returns {void}
*/
diff --git a/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js b/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
index 7f4a9c3c8e..c8af043c1b 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
@@ -49,7 +49,6 @@ module.exports = {
/**
* Function to check regular expression.
- *
* @param {string} pattern The regular expression pattern to be check.
* @param {ASTNode} node AST node which contains regular expression.
* @param {boolean} uFlag Flag indicates whether unicode mode is enabled or not.
diff --git a/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js
index b4113a3b32..672d9bcaa0 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-numeric-literals.js
@@ -6,6 +6,12 @@
"use strict";
//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("./utils/ast-utils");
+
+//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
@@ -94,13 +100,13 @@ module.exports = {
functionName: sourceCode.getText(node.callee)
},
fix(fixer) {
- const newPrefix = prefixMap[node.arguments[1].value];
-
if (sourceCode.getCommentsInside(node).length) {
return null;
}
- if (+(newPrefix + node.arguments[0].value) !== parseInt(node.arguments[0].value, node.arguments[1].value)) {
+ const replacement = `${prefixMap[node.arguments[1].value]}${node.arguments[0].value}`;
+
+ if (+replacement !== parseInt(node.arguments[0].value, node.arguments[1].value)) {
/*
* If the newly-produced literal would be invalid, (e.g. 0b1234),
@@ -108,7 +114,29 @@ module.exports = {
*/
return null;
}
- return fixer.replaceText(node, prefixMap[node.arguments[1].value] + node.arguments[0].value);
+
+ const tokenBefore = sourceCode.getTokenBefore(node),
+ tokenAfter = sourceCode.getTokenAfter(node);
+ let prefix = "",
+ suffix = "";
+
+ if (
+ tokenBefore &&
+ tokenBefore.range[1] === node.range[0] &&
+ !astUtils.canTokensBeAdjacent(tokenBefore, replacement)
+ ) {
+ prefix = " ";
+ }
+
+ if (
+ tokenAfter &&
+ node.range[1] === tokenAfter.range[0] &&
+ !astUtils.canTokensBeAdjacent(replacement, tokenAfter)
+ ) {
+ suffix = " ";
+ }
+
+ return fixer.replaceText(node, `${prefix}${replacement}${suffix}`);
}
});
}
diff --git a/tools/node_modules/eslint/lib/rules/prefer-object-spread.js b/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
index 214f950c64..bbcd88bee3 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
@@ -18,7 +18,7 @@ const ANY_SPACE = /\s/u;
/**
* Helper that checks if the Object.assign call has array spread
- * @param {ASTNode} node - The node that the rule warns on
+ * @param {ASTNode} node The node that the rule warns on
* @returns {boolean} - Returns true if the Object.assign call has array spread
*/
function hasArraySpread(node) {
@@ -28,8 +28,8 @@ function hasArraySpread(node) {
/**
* Helper that checks if the node needs parentheses to be valid JS.
* The default is to wrap the node in parentheses to avoid parsing errors.
- * @param {ASTNode} node - The node that the rule warns on
- * @param {Object} sourceCode - in context sourcecode object
+ * @param {ASTNode} node The node that the rule warns on
+ * @param {Object} sourceCode in context sourcecode object
* @returns {boolean} - Returns true if the node needs parentheses
*/
function needsParens(node, sourceCode) {
@@ -51,8 +51,8 @@ function needsParens(node, sourceCode) {
/**
* Determines if an argument needs parentheses. The default is to not add parens.
- * @param {ASTNode} node - The node to be checked.
- * @param {Object} sourceCode - in context sourcecode object
+ * @param {ASTNode} node The node to be checked.
+ * @param {Object} sourceCode in context sourcecode object
* @returns {boolean} True if the node needs parentheses
*/
function argNeedsParens(node, sourceCode) {
@@ -142,8 +142,8 @@ function getEndWithSpaces(token, sourceCode) {
/**
* Autofixes the Object.assign call to use an object spread instead.
- * @param {ASTNode|null} node - The node that the rule warns on, i.e. the Object.assign call
- * @param {string} sourceCode - sourceCode of the Object.assign call
+ * @param {ASTNode|null} node The node that the rule warns on, i.e. the Object.assign call
+ * @param {string} sourceCode sourceCode of the Object.assign call
* @returns {Function} autofixer - replaces the Object.assign with a spread object.
*/
function defineFixer(node, sourceCode) {
diff --git a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
index 95a562c4a2..3a28584f6b 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
@@ -11,7 +11,7 @@
/**
* Gets the variable object of `arguments` which is defined implicitly.
- * @param {eslint-scope.Scope} scope - A scope to get.
+ * @param {eslint-scope.Scope} scope A scope to get.
* @returns {eslint-scope.Variable} The found variable object.
*/
function getVariableOfArguments(scope) {
@@ -41,8 +41,7 @@ function getVariableOfArguments(scope) {
* - arguments[i] .... true // computed member access
* - arguments[0] .... true // computed member access
* - arguments.length .... false // normal member access
- *
- * @param {eslint-scope.Reference} reference - The reference to check.
+ * @param {eslint-scope.Reference} reference The reference to check.
* @returns {boolean} `true` if the reference is not normal member access.
*/
function isNotNormalMemberAccess(reference) {
@@ -78,8 +77,7 @@ module.exports = {
/**
* Reports a given reference.
- *
- * @param {eslint-scope.Reference} reference - A reference to report.
+ * @param {eslint-scope.Reference} reference A reference to report.
* @returns {void}
*/
function report(reference) {
@@ -92,7 +90,6 @@ module.exports = {
/**
* Reports references of the implicit `arguments` variable if exist.
- *
* @returns {void}
*/
function checkForArguments() {
diff --git a/tools/node_modules/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js
index 9368c972c0..14c05bd971 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-spread.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-spread.js
@@ -13,7 +13,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a node is a `.apply()` for variadic.
- * @param {ASTNode} node - A CallExpression node to check.
+ * @param {ASTNode} node A CallExpression node to check.
* @returns {boolean} Whether or not the node is a `.apply()` for variadic.
*/
function isVariadicApplyCalling(node) {
@@ -31,9 +31,9 @@ function isVariadicApplyCalling(node) {
/**
* Checks whether or not `thisArg` is not changed by `.apply()`.
- * @param {ASTNode|null} expectedThis - The node that is the owner of the applied function.
- * @param {ASTNode} thisArg - The node that is given to the first argument of the `.apply()`.
- * @param {RuleContext} context - The ESLint rule context object.
+ * @param {ASTNode|null} expectedThis The node that is the owner of the applied function.
+ * @param {ASTNode} thisArg The node that is given to the first argument of the `.apply()`.
+ * @param {RuleContext} context The ESLint rule context object.
* @returns {boolean} Whether or not `thisArg` is not changed by `.apply()`.
*/
function isValidThisArg(expectedThis, thisArg, context) {
diff --git a/tools/node_modules/eslint/lib/rules/prefer-template.js b/tools/node_modules/eslint/lib/rules/prefer-template.js
index a2507d452c..fa6e58d972 100644
--- a/tools/node_modules/eslint/lib/rules/prefer-template.js
+++ b/tools/node_modules/eslint/lib/rules/prefer-template.js
@@ -17,7 +17,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Checks whether or not a given node is a concatenation.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a concatenation.
*/
function isConcatenation(node) {
@@ -26,7 +26,7 @@ function isConcatenation(node) {
/**
* Gets the top binary expression node for concatenation in parents of a given node.
- * @param {ASTNode} node - A node to get.
+ * @param {ASTNode} node A node to get.
* @returns {ASTNode} the top binary expression node in parents of a given node.
*/
function getTopConcatBinaryExpression(node) {
@@ -70,7 +70,7 @@ function hasOctalEscapeSequence(node) {
/**
* Checks whether or not a given binary expression has string literals.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node has string literals.
*/
function hasStringLiteral(node) {
@@ -84,7 +84,7 @@ function hasStringLiteral(node) {
/**
* Checks whether or not a given binary expression has non string literals.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node has non string literals.
*/
function hasNonStringLiteral(node) {
@@ -242,8 +242,7 @@ module.exports = {
/**
* Reports if a given node is string concatenation with non string literals.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {void}
*/
function checkForStringConcat(node) {
diff --git a/tools/node_modules/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js
index 79493b2499..ab09b8fa93 100644
--- a/tools/node_modules/eslint/lib/rules/quote-props.js
+++ b/tools/node_modules/eslint/lib/rules/quote-props.js
@@ -85,7 +85,7 @@ module.exports = {
/**
* Checks whether a certain string constitutes an ES3 token
- * @param {string} tokenStr - The string to be checked.
+ * @param {string} tokenStr The string to be checked.
* @returns {boolean} `true` if it is an ES3 token.
*/
function isKeyword(tokenStr) {
diff --git a/tools/node_modules/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js
index 5f260e55f0..f78d112942 100644
--- a/tools/node_modules/eslint/lib/rules/quotes.js
+++ b/tools/node_modules/eslint/lib/rules/quotes.js
@@ -41,7 +41,7 @@ const UNESCAPED_LINEBREAK_PATTERN = new RegExp(String.raw`(^|[^\\])(\\\\)*[${Arr
* escaping and unescaping as necessary.
* Only escaping of the minimal set of characters is changed.
* Note: escaping of newlines when switching from backtick to other quotes is not handled.
- * @param {string} str - A string to convert.
+ * @param {string} str A string to convert.
* @returns {string} The string with changed quotes.
* @private
*/
@@ -143,7 +143,6 @@ module.exports = {
*
* In both cases, inside of the braces is handled as normal JavaScript.
* The braces are `JSXExpressionContainer` nodes.
- *
* @param {ASTNode} node The Literal node to check.
* @returns {boolean} True if the node is a part of JSX, false if not.
* @private
@@ -155,7 +154,7 @@ module.exports = {
/**
* Checks whether or not a given node is a directive.
* The directive is a `ExpressionStatement` which has only a string literal.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a directive.
* @private
*/
@@ -170,7 +169,7 @@ module.exports = {
/**
* Checks whether or not a given node is a part of directive prologues.
* See also: http://www.ecma-international.org/ecma-262/6.0/#sec-directive-prologues-and-the-use-strict-directive
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a part of directive prologues.
* @private
*/
@@ -198,7 +197,7 @@ module.exports = {
/**
* Checks whether or not a given node is allowed as non backtick.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is allowed as non backtick.
* @private
*/
@@ -230,7 +229,7 @@ module.exports = {
/**
* Checks whether or not a given TemplateLiteral node is actually using any of the special features provided by template literal strings.
- * @param {ASTNode} node - A TemplateLiteral node to check.
+ * @param {ASTNode} node A TemplateLiteral node to check.
* @returns {boolean} Whether or not the TemplateLiteral node is using any of the special features provided by template literal strings.
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/radix.js b/tools/node_modules/eslint/lib/rules/radix.js
index b7b296f451..ed3c5cb66b 100644
--- a/tools/node_modules/eslint/lib/rules/radix.js
+++ b/tools/node_modules/eslint/lib/rules/radix.js
@@ -20,8 +20,7 @@ const MODE_ALWAYS = "always",
/**
* Checks whether a given variable is shadowed or not.
- *
- * @param {eslint-scope.Variable} variable - A variable to check.
+ * @param {eslint-scope.Variable} variable A variable to check.
* @returns {boolean} `true` if the variable is shadowed.
*/
function isShadowed(variable) {
@@ -30,8 +29,7 @@ function isShadowed(variable) {
/**
* Checks whether a given node is a MemberExpression of `parseInt` method or not.
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a MemberExpression of `parseInt`
* method.
*/
@@ -51,8 +49,7 @@ function isParseIntMethod(node) {
*
* - A literal except numbers.
* - undefined.
- *
- * @param {ASTNode} radix - A node of radix to check.
+ * @param {ASTNode} radix A node of radix to check.
* @returns {boolean} `true` if the node is valid.
*/
function isValidRadix(radix) {
@@ -64,8 +61,7 @@ function isValidRadix(radix) {
/**
* Checks whether a given node is a default value of radix or not.
- *
- * @param {ASTNode} radix - A node of radix to check.
+ * @param {ASTNode} radix A node of radix to check.
* @returns {boolean} `true` if the node is the literal node of `10`.
*/
function isDefaultRadix(radix) {
@@ -100,8 +96,7 @@ module.exports = {
/**
* Checks the arguments of a given CallExpression node and reports it if it
* offends this rule.
- *
- * @param {ASTNode} node - A CallExpression node to check.
+ * @param {ASTNode} node A CallExpression node to check.
* @returns {void}
*/
function checkArguments(node) {
diff --git a/tools/node_modules/eslint/lib/rules/require-await.js b/tools/node_modules/eslint/lib/rules/require-await.js
index 298cb951de..0aa6fce7e1 100644
--- a/tools/node_modules/eslint/lib/rules/require-await.js
+++ b/tools/node_modules/eslint/lib/rules/require-await.js
@@ -17,8 +17,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Capitalize the 1st letter of the given text.
- *
- * @param {string} text - The text to capitalize.
+ * @param {string} text The text to capitalize.
* @returns {string} The text that the 1st letter was capitalized.
*/
function capitalizeFirstLetter(text) {
@@ -49,7 +48,6 @@ module.exports = {
/**
* Push the scope info object to the stack.
- *
* @returns {void}
*/
function enterFunction() {
@@ -62,8 +60,7 @@ module.exports = {
/**
* Pop the top scope info object from the stack.
* Also, it reports the function if needed.
- *
- * @param {ASTNode} node - The node to report.
+ * @param {ASTNode} node The node to report.
* @returns {void}
*/
function exitFunction(node) {
diff --git a/tools/node_modules/eslint/lib/rules/require-yield.js b/tools/node_modules/eslint/lib/rules/require-yield.js
index 7bb7cf9a87..dbfd759948 100644
--- a/tools/node_modules/eslint/lib/rules/require-yield.js
+++ b/tools/node_modules/eslint/lib/rules/require-yield.js
@@ -28,7 +28,7 @@ module.exports = {
/**
* If the node is a generator function, start counting `yield` keywords.
- * @param {Node} node - A function node to check.
+ * @param {Node} node A function node to check.
* @returns {void}
*/
function beginChecking(node) {
@@ -40,7 +40,7 @@ module.exports = {
/**
* If the node is a generator function, end counting `yield` keywords, then
* reports result.
- * @param {Node} node - A function node to check.
+ * @param {Node} node A function node to check.
* @returns {void}
*/
function endChecking(node) {
diff --git a/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js
index 04539395ef..cd740fd3a9 100644
--- a/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/rest-spread-spacing.js
@@ -39,7 +39,7 @@ module.exports = {
/**
* Checks whitespace between rest/spread operators and their expressions
- * @param {ASTNode} node - The node to check
+ * @param {ASTNode} node The node to check
* @returns {void}
*/
function checkWhiteSpace(node) {
diff --git a/tools/node_modules/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js
index 05e643ca06..3b7f1d0103 100644
--- a/tools/node_modules/eslint/lib/rules/sort-imports.js
+++ b/tools/node_modules/eslint/lib/rules/sort-imports.js
@@ -70,8 +70,7 @@ module.exports = {
* import * as myModule from "my-module.js" --> all
* import {myMember} from "my-module.js" --> single
* import {foo, bar} from "my-module.js" --> multiple
- *
- * @param {ASTNode} node - the ImportDeclaration node.
+ * @param {ASTNode} node the ImportDeclaration node.
* @returns {string} used member parameter style, ["all", "multiple", "single"]
*/
function usedMemberSyntax(node) {
@@ -90,7 +89,7 @@ module.exports = {
/**
* Gets the group by member parameter index for given declaration.
- * @param {ASTNode} node - the ImportDeclaration node.
+ * @param {ASTNode} node the ImportDeclaration node.
* @returns {number} the declaration group by member index.
*/
function getMemberParameterGroupIndex(node) {
@@ -99,7 +98,7 @@ module.exports = {
/**
* Gets the local name of the first imported module.
- * @param {ASTNode} node - the ImportDeclaration node.
+ * @param {ASTNode} node the ImportDeclaration node.
* @returns {?string} the local name of the first imported module.
*/
function getFirstLocalMemberName(node) {
diff --git a/tools/node_modules/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js
index c314d4a636..a5ce445f71 100644
--- a/tools/node_modules/eslint/lib/rules/sort-keys.js
+++ b/tools/node_modules/eslint/lib/rules/sort-keys.js
@@ -23,8 +23,7 @@ const astUtils = require("./utils/ast-utils"),
* whether it's a computed property or not.
* - If the property has a static name, this returns the static name.
* - Otherwise, this returns null.
- *
- * @param {ASTNode} node - The `Property` node to get.
+ * @param {ASTNode} node The `Property` node to get.
* @returns {string|null} The property name or null.
* @private
*/
@@ -43,7 +42,6 @@ function getPropertyName(node) {
*
* Postfix `I` is meant insensitive.
* Postfix `N` is meant natual.
- *
* @private
*/
const isValidOrders = {
diff --git a/tools/node_modules/eslint/lib/rules/space-before-blocks.js b/tools/node_modules/eslint/lib/rules/space-before-blocks.js
index 527366aacc..038e88db52 100644
--- a/tools/node_modules/eslint/lib/rules/space-before-blocks.js
+++ b/tools/node_modules/eslint/lib/rules/space-before-blocks.js
@@ -79,8 +79,7 @@ module.exports = {
/**
* Checks whether or not a given token is an arrow operator (=>) or a keyword
* in order to avoid to conflict with `arrow-spacing` and `keyword-spacing`.
- *
- * @param {Token} token - A token to check.
+ * @param {Token} token A token to check.
* @returns {boolean} `true` if the token is an arrow operator.
*/
function isConflicted(token) {
diff --git a/tools/node_modules/eslint/lib/rules/space-in-parens.js b/tools/node_modules/eslint/lib/rules/space-in-parens.js
index 35ded5e786..85ee74210d 100644
--- a/tools/node_modules/eslint/lib/rules/space-in-parens.js
+++ b/tools/node_modules/eslint/lib/rules/space-in-parens.js
@@ -232,7 +232,7 @@ module.exports = {
if (token.value === "(" && openerMissingSpace(token, nextToken)) {
context.report({
node,
- loc: token.loc.start,
+ loc: token.loc,
messageId: "missingOpeningSpace",
fix(fixer) {
return fixer.insertTextAfter(token, " ");
@@ -244,7 +244,7 @@ module.exports = {
if (token.value === "(" && openerRejectsSpace(token, nextToken)) {
context.report({
node,
- loc: token.loc.start,
+ loc: { start: token.loc.end, end: nextToken.loc.start },
messageId: "rejectedOpeningSpace",
fix(fixer) {
return fixer.removeRange([token.range[1], nextToken.range[0]]);
@@ -256,7 +256,7 @@ module.exports = {
if (token.value === ")" && closerMissingSpace(prevToken, token)) {
context.report({
node,
- loc: token.loc.start,
+ loc: token.loc,
messageId: "missingClosingSpace",
fix(fixer) {
return fixer.insertTextBefore(token, " ");
@@ -268,7 +268,7 @@ module.exports = {
if (token.value === ")" && closerRejectsSpace(prevToken, token)) {
context.report({
node,
- loc: token.loc.start,
+ loc: { start: prevToken.loc.end, end: token.loc.start },
messageId: "rejectedClosingSpace",
fix(fixer) {
return fixer.removeRange([prevToken.range[1], token.range[0]]);
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 8d1d172c66..b2fbe47b47 100644
--- a/tools/node_modules/eslint/lib/rules/space-infix-ops.js
+++ b/tools/node_modules/eslint/lib/rules/space-infix-ops.js
@@ -41,9 +41,9 @@ module.exports = {
/**
* Returns the first token which violates the rule
- * @param {ASTNode} left - The left node of the main node
- * @param {ASTNode} right - The right node of the main node
- * @param {string} op - The operator of the main node
+ * @param {ASTNode} left The left node of the main node
+ * @param {ASTNode} right The right node of the main node
+ * @param {string} op The operator of the main node
* @returns {Object} The violator token or null
* @private
*/
@@ -61,8 +61,8 @@ module.exports = {
/**
* Reports an AST node as a rule violation
- * @param {ASTNode} mainNode - The node to report
- * @param {Object} culpritToken - The token which has a problem
+ * @param {ASTNode} mainNode The node to report
+ * @param {Object} culpritToken The token which has a problem
* @returns {void}
* @private
*/
diff --git a/tools/node_modules/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js
index 731bd212e3..958bb2c644 100644
--- a/tools/node_modules/eslint/lib/rules/spaced-comment.js
+++ b/tools/node_modules/eslint/lib/rules/spaced-comment.js
@@ -13,7 +13,7 @@ const astUtils = require("./utils/ast-utils");
/**
* Escapes the control characters of a given string.
- * @param {string} s - A string to escape.
+ * @param {string} s A string to escape.
* @returns {string} An escaped string.
*/
function escape(s) {
@@ -23,7 +23,7 @@ function escape(s) {
/**
* Escapes the control characters of a given string.
* And adds a repeat flag.
- * @param {string} s - A string to escape.
+ * @param {string} s A string to escape.
* @returns {string} An escaped string.
*/
function escapeAndRepeat(s) {
@@ -33,7 +33,7 @@ function escapeAndRepeat(s) {
/**
* Parses `markers` option.
* If markers don't include `"*"`, this adds `"*"` to allow JSDoc comments.
- * @param {string[]} [markers] - A marker list.
+ * @param {string[]} [markers] A marker list.
* @returns {string[]} A marker list.
*/
function parseMarkersOption(markers) {
@@ -51,8 +51,7 @@ function parseMarkersOption(markers) {
* Generated pattern:
*
* 1. A space or an exception pattern sequence.
- *
- * @param {string[]} exceptions - An exception pattern list.
+ * @param {string[]} exceptions An exception pattern list.
* @returns {string} A regular expression string for exceptions.
*/
function createExceptionsPattern(exceptions) {
@@ -97,9 +96,8 @@ function createExceptionsPattern(exceptions) {
*
* 1. First, a marker or nothing.
* 2. Next, a space or an exception pattern sequence.
- *
- * @param {string[]} markers - A marker list.
- * @param {string[]} exceptions - An exception pattern list.
+ * @param {string[]} markers A marker list.
+ * @param {string[]} exceptions An exception pattern list.
* @returns {RegExp} A RegExp object for the beginning of a comment in `always` mode.
*/
function createAlwaysStylePattern(markers, exceptions) {
@@ -135,8 +133,7 @@ function createAlwaysStylePattern(markers, exceptions) {
*
* 1. First, a marker or nothing (captured).
* 2. Next, a space or a tab.
- *
- * @param {string[]} markers - A marker list.
+ * @param {string[]} markers A marker list.
* @returns {RegExp} A RegExp object for `never` mode.
*/
function createNeverStylePattern(markers) {
@@ -260,10 +257,10 @@ module.exports = {
/**
* Reports a beginning spacing error with an appropriate message.
- * @param {ASTNode} node - A comment node to check.
- * @param {string} message - An error message to report.
- * @param {Array} match - An array of match results for markers.
- * @param {string} refChar - Character used for reference in the error message.
+ * @param {ASTNode} node A comment node to check.
+ * @param {string} message An error message to report.
+ * @param {Array} match An array of match results for markers.
+ * @param {string} refChar Character used for reference in the error message.
* @returns {void}
*/
function reportBegin(node, message, match, refChar) {
@@ -293,9 +290,9 @@ module.exports = {
/**
* Reports an ending spacing error with an appropriate message.
- * @param {ASTNode} node - A comment node to check.
- * @param {string} message - An error message to report.
- * @param {string} match - An array of the matched whitespace characters.
+ * @param {ASTNode} node A comment node to check.
+ * @param {string} message An error message to report.
+ * @param {string} match An array of the matched whitespace characters.
* @returns {void}
*/
function reportEnd(node, message, match) {
@@ -317,7 +314,7 @@ module.exports = {
/**
* Reports a given comment if it's invalid.
- * @param {ASTNode} node - a comment node to check.
+ * @param {ASTNode} node a comment node to check.
* @returns {void}
*/
function checkCommentForSpace(node) {
diff --git a/tools/node_modules/eslint/lib/rules/strict.js b/tools/node_modules/eslint/lib/rules/strict.js
index b93a6a1a17..b0d6cf9172 100644
--- a/tools/node_modules/eslint/lib/rules/strict.js
+++ b/tools/node_modules/eslint/lib/rules/strict.js
@@ -43,8 +43,7 @@ function getUseStrictDirectives(statements) {
/**
* Checks whether a given parameter is a simple parameter.
- *
- * @param {ASTNode} node - A pattern node to check.
+ * @param {ASTNode} node A pattern node to check.
* @returns {boolean} `true` if the node is an Identifier node.
*/
function isSimpleParameter(node) {
@@ -53,8 +52,7 @@ function isSimpleParameter(node) {
/**
* Checks whether a given parameter list is a simple parameter list.
- *
- * @param {ASTNode[]} params - A parameter list to check.
+ * @param {ASTNode[]} params A parameter list to check.
* @returns {boolean} `true` if the every parameter is an Identifier node.
*/
function isSimpleParameterList(params) {
diff --git a/tools/node_modules/eslint/lib/rules/symbol-description.js b/tools/node_modules/eslint/lib/rules/symbol-description.js
index 3fd5a35967..155cea4dc0 100644
--- a/tools/node_modules/eslint/lib/rules/symbol-description.js
+++ b/tools/node_modules/eslint/lib/rules/symbol-description.js
@@ -38,8 +38,7 @@ module.exports = {
/**
* Reports if node does not conform the rule in case rule is set to
* report missing description
- *
- * @param {ASTNode} node - A CallExpression node to check.
+ * @param {ASTNode} node A CallExpression node to check.
* @returns {void}
*/
function checkArgument(node) {
diff --git a/tools/node_modules/eslint/lib/rules/template-curly-spacing.js b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js
index 2794b45cf7..07da6a39b0 100644
--- a/tools/node_modules/eslint/lib/rules/template-curly-spacing.js
+++ b/tools/node_modules/eslint/lib/rules/template-curly-spacing.js
@@ -53,7 +53,7 @@ module.exports = {
/**
* Checks spacing before `}` of a given token.
- * @param {Token} token - A token to check. This is a Template token.
+ * @param {Token} token A token to check. This is a Template token.
* @returns {void}
*/
function checkSpacingBefore(token) {
@@ -82,7 +82,7 @@ module.exports = {
/**
* Checks spacing after `${` of a given token.
- * @param {Token} token - A token to check. This is a Template token.
+ * @param {Token} token A token to check. This is a Template token.
* @returns {void}
*/
function checkSpacingAfter(token) {
diff --git a/tools/node_modules/eslint/lib/rules/use-isnan.js b/tools/node_modules/eslint/lib/rules/use-isnan.js
index b2eb84b7b3..cd9ccdbaf8 100644
--- a/tools/node_modules/eslint/lib/rules/use-isnan.js
+++ b/tools/node_modules/eslint/lib/rules/use-isnan.js
@@ -6,6 +6,12 @@
"use strict";
//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("./utils/ast-utils");
+
+//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
@@ -40,6 +46,10 @@ module.exports = {
enforceForSwitchCase: {
type: "boolean",
default: false
+ },
+ enforceForIndexOf: {
+ type: "boolean",
+ default: false
}
},
additionalProperties: false
@@ -49,16 +59,18 @@ module.exports = {
messages: {
comparisonWithNaN: "Use the isNaN function to compare with NaN.",
switchNaN: "'switch(NaN)' can never match a case clause. Use Number.isNaN instead of the switch.",
- caseNaN: "'case NaN' can never match. Use Number.isNaN before the switch."
+ caseNaN: "'case NaN' can never match. Use Number.isNaN before the switch.",
+ indexOfNaN: "Array prototype method '{{ methodName }}' cannot find NaN."
}
},
create(context) {
const enforceForSwitchCase = context.options[0] && context.options[0].enforceForSwitchCase;
+ const enforceForIndexOf = context.options[0] && context.options[0].enforceForIndexOf;
/**
- * Checks the given `BinaryExpression` node.
+ * Checks the given `BinaryExpression` node for `foo === NaN` and other comparisons.
* @param {ASTNode} node The node to check.
* @returns {void}
*/
@@ -72,7 +84,7 @@ module.exports = {
}
/**
- * Checks the discriminant and all case clauses of the given `SwitchStatement` node.
+ * Checks the discriminant and all case clauses of the given `SwitchStatement` node for `switch(NaN)` and `case NaN:`
* @param {ASTNode} node The node to check.
* @returns {void}
*/
@@ -88,6 +100,27 @@ module.exports = {
}
}
+ /**
+ * Checks the the given `CallExpression` node for `.indexOf(NaN)` and `.lastIndexOf(NaN)`.
+ * @param {ASTNode} node The node to check.
+ * @returns {void}
+ */
+ function checkCallExpression(node) {
+ const callee = node.callee;
+
+ if (callee.type === "MemberExpression") {
+ const methodName = astUtils.getStaticPropertyName(callee);
+
+ if (
+ (methodName === "indexOf" || methodName === "lastIndexOf") &&
+ node.arguments.length === 1 &&
+ isNaNIdentifier(node.arguments[0])
+ ) {
+ context.report({ node, messageId: "indexOfNaN", data: { methodName } });
+ }
+ }
+ }
+
const listeners = {
BinaryExpression: checkBinaryExpression
};
@@ -96,6 +129,10 @@ module.exports = {
listeners.SwitchStatement = checkSwitchStatement;
}
+ if (enforceForIndexOf) {
+ listeners.CallExpression = checkCallExpression;
+ }
+
return listeners;
}
};
diff --git a/tools/node_modules/eslint/lib/rules/utils/ast-utils.js b/tools/node_modules/eslint/lib/rules/utils/ast-utils.js
index f0b926e329..17e056c240 100644
--- a/tools/node_modules/eslint/lib/rules/utils/ast-utils.js
+++ b/tools/node_modules/eslint/lib/rules/utils/ast-utils.js
@@ -42,9 +42,9 @@ const OCTAL_ESCAPE_PATTERN = /^(?:[^\\]|\\[^0-7]|\\0(?![0-9]))*\\(?:[1-7]|0[0-9]
/**
* Checks reference if is non initializer and writable.
- * @param {Reference} reference - A reference to check.
- * @param {int} index - The index of the reference in the references.
- * @param {Reference[]} references - The array that the reference belongs to.
+ * @param {Reference} reference A reference to check.
+ * @param {int} index The index of the reference in the references.
+ * @param {Reference[]} references The array that the reference belongs to.
* @returns {boolean} Success/Failure
* @private
*/
@@ -68,8 +68,7 @@ function isModifyingReference(reference, index, references) {
/**
* Checks whether the given string starts with uppercase or not.
- *
- * @param {string} s - The string to check.
+ * @param {string} s The string to check.
* @returns {boolean} `true` if the string starts with uppercase.
*/
function startsWithUpperCase(s) {
@@ -78,7 +77,7 @@ function startsWithUpperCase(s) {
/**
* Checks whether or not a node is a constructor.
- * @param {ASTNode} node - A function node to check.
+ * @param {ASTNode} node A function node to check.
* @returns {boolean} Wehether or not a node is a constructor.
*/
function isES5Constructor(node) {
@@ -87,7 +86,7 @@ function isES5Constructor(node) {
/**
* Finds a function node from ancestors of a node.
- * @param {ASTNode} node - A start node to find.
+ * @param {ASTNode} node A start node to find.
* @returns {Node|null} A found function node.
*/
function getUpperFunction(node) {
@@ -106,8 +105,7 @@ function getUpperFunction(node) {
* - ArrowFunctionExpression
* - FunctionDeclaration
* - FunctionExpression
- *
- * @param {ASTNode|null} node - A node to check.
+ * @param {ASTNode|null} node A node to check.
* @returns {boolean} `true` if the node is a function node.
*/
function isFunction(node) {
@@ -123,8 +121,7 @@ function isFunction(node) {
* - ForOfStatement
* - ForStatement
* - WhileStatement
- *
- * @param {ASTNode|null} node - A node to check.
+ * @param {ASTNode|null} node A node to check.
* @returns {boolean} `true` if the node is a loop node.
*/
function isLoop(node) {
@@ -133,8 +130,7 @@ function isLoop(node) {
/**
* Checks whether the given node is in a loop or not.
- *
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} `true` if the node is in a loop.
*/
function isInLoop(node) {
@@ -149,7 +145,7 @@ function isInLoop(node) {
/**
* Checks whether or not a node is `null` or `undefined`.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a `null` or `undefined`.
* @public
*/
@@ -163,7 +159,7 @@ function isNullOrUndefined(node) {
/**
* Checks whether or not a node is callee.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is callee.
*/
function isCallee(node) {
@@ -172,7 +168,7 @@ function isCallee(node) {
/**
* Checks whether or not a node is `Reflect.apply`.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a `Reflect.apply`.
*/
function isReflectApply(node) {
@@ -188,7 +184,7 @@ function isReflectApply(node) {
/**
* Checks whether or not a node is `Array.from`.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a `Array.from`.
*/
function isArrayFromMethod(node) {
@@ -204,7 +200,7 @@ function isArrayFromMethod(node) {
/**
* Checks whether or not a node is a method which has `thisArg`.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} Whether or not the node is a method which has `thisArg`.
*/
function isMethodWhichHasThisArg(node) {
@@ -223,7 +219,7 @@ function isMethodWhichHasThisArg(node) {
/**
* Creates the negate function of the given function.
- * @param {Function} f - The function to negate.
+ * @param {Function} f The function to negate.
* @returns {Function} Negated function.
*/
function negate(f) {
@@ -232,8 +228,8 @@ function negate(f) {
/**
* Checks whether or not a node has a `@this` tag in its comments.
- * @param {ASTNode} node - A node to check.
- * @param {SourceCode} sourceCode - A SourceCode instance to get comments.
+ * @param {ASTNode} node A node to check.
+ * @param {SourceCode} sourceCode A SourceCode instance to get comments.
* @returns {boolean} Whether or not the node has a `@this` tag in its comments.
*/
function hasJSDocThisTag(node, sourceCode) {
@@ -268,8 +264,7 @@ function isParenthesised(sourceCode, node) {
/**
* Checks if the given token is an arrow token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is an arrow token.
*/
function isArrowToken(token) {
@@ -278,8 +273,7 @@ function isArrowToken(token) {
/**
* Checks if the given token is a comma token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a comma token.
*/
function isCommaToken(token) {
@@ -288,8 +282,7 @@ function isCommaToken(token) {
/**
* Checks if the given token is a dot token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a dot token.
*/
function isDotToken(token) {
@@ -298,8 +291,7 @@ function isDotToken(token) {
/**
* Checks if the given token is a semicolon token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a semicolon token.
*/
function isSemicolonToken(token) {
@@ -308,8 +300,7 @@ function isSemicolonToken(token) {
/**
* Checks if the given token is a colon token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a colon token.
*/
function isColonToken(token) {
@@ -318,8 +309,7 @@ function isColonToken(token) {
/**
* Checks if the given token is an opening parenthesis token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is an opening parenthesis token.
*/
function isOpeningParenToken(token) {
@@ -328,8 +318,7 @@ function isOpeningParenToken(token) {
/**
* Checks if the given token is a closing parenthesis token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a closing parenthesis token.
*/
function isClosingParenToken(token) {
@@ -338,8 +327,7 @@ function isClosingParenToken(token) {
/**
* Checks if the given token is an opening square bracket token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is an opening square bracket token.
*/
function isOpeningBracketToken(token) {
@@ -348,8 +336,7 @@ function isOpeningBracketToken(token) {
/**
* Checks if the given token is a closing square bracket token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a closing square bracket token.
*/
function isClosingBracketToken(token) {
@@ -358,8 +345,7 @@ function isClosingBracketToken(token) {
/**
* Checks if the given token is an opening brace token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is an opening brace token.
*/
function isOpeningBraceToken(token) {
@@ -368,8 +354,7 @@ function isOpeningBraceToken(token) {
/**
* Checks if the given token is a closing brace token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a closing brace token.
*/
function isClosingBraceToken(token) {
@@ -378,8 +363,7 @@ function isClosingBraceToken(token) {
/**
* Checks if the given token is a comment token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a comment token.
*/
function isCommentToken(token) {
@@ -388,8 +372,7 @@ function isCommentToken(token) {
/**
* Checks if the given token is a keyword token or not.
- *
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if the token is a keyword token.
*/
function isKeywordToken(token) {
@@ -398,9 +381,8 @@ function isKeywordToken(token) {
/**
* Gets the `(` token of the given function node.
- *
- * @param {ASTNode} node - The function node to get.
- * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @param {ASTNode} node The function node to get.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
* @returns {Token} `(` token.
*/
function getOpeningParenOfParams(node, sourceCode) {
@@ -411,9 +393,9 @@ function getOpeningParenOfParams(node, sourceCode) {
/**
* Checks whether or not the tokens of two given nodes are same.
- * @param {ASTNode} left - A node 1 to compare.
- * @param {ASTNode} right - A node 2 to compare.
- * @param {SourceCode} sourceCode - The ESLint source code object.
+ * @param {ASTNode} left A node 1 to compare.
+ * @param {ASTNode} right A node 2 to compare.
+ * @param {SourceCode} sourceCode The ESLint source code object.
* @returns {boolean} the source code for the given node.
*/
function equalTokens(left, right, sourceCode) {
@@ -447,8 +429,8 @@ module.exports = {
/**
* Determines whether two adjacent tokens are on the same line.
- * @param {Object} left - The left token object.
- * @param {Object} right - The right token object.
+ * @param {Object} left The left token object.
+ * @param {Object} right The right token object.
* @returns {boolean} Whether or not the tokens are on the same line.
* @public
*/
@@ -494,7 +476,7 @@ module.exports = {
/**
* Checks whether or not a given node is a string literal.
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is a string literal.
*/
isStringLiteral(node) {
@@ -514,8 +496,7 @@ module.exports = {
* - ForStatement
* - SwitchStatement
* - WhileStatement
- *
- * @param {ASTNode} node - A node to check.
+ * @param {ASTNode} node A node to check.
* @returns {boolean} `true` if the node is breakable.
*/
isBreakableStatement(node) {
@@ -524,7 +505,7 @@ module.exports = {
/**
* Gets references which are non initializer and writable.
- * @param {Reference[]} references - An array of references.
+ * @param {Reference[]} references An array of references.
* @returns {Reference[]} An array of only references which are non initializer and writable.
* @public
*/
@@ -568,7 +549,6 @@ module.exports = {
* consequent;
*
* When taking this `IfStatement`, returns `consequent;` statement.
- *
* @param {ASTNode} A node to get.
* @returns {ASTNode|null} The trailing statement's node.
*/
@@ -576,9 +556,8 @@ module.exports = {
/**
* Finds the variable by a given name in a given scope and its upper scopes.
- *
- * @param {eslint-scope.Scope} initScope - A scope to start find.
- * @param {string} name - A variable name to find.
+ * @param {eslint-scope.Scope} initScope A scope to start find.
+ * @param {string} name A variable name to find.
* @returns {eslint-scope.Variable|null} A found variable or `null`.
*/
getVariableByName(initScope, name) {
@@ -613,9 +592,8 @@ module.exports = {
* - The location is not on an ES2015 class.
* - Its `bind`/`call`/`apply` method is not called directly.
* - The function is not a callback of array methods (such as `.forEach()`) if `thisArg` is given.
- *
- * @param {ASTNode} node - A function node to check.
- * @param {SourceCode} sourceCode - A SourceCode instance to get comments.
+ * @param {ASTNode} node A function node to check.
+ * @param {SourceCode} sourceCode A SourceCode instance to get comments.
* @returns {boolean} The function node is the default `this` binding.
*/
isDefaultThisBinding(node, sourceCode) {
@@ -861,8 +839,7 @@ module.exports = {
/**
* Checks whether the given node is an empty block node or not.
- *
- * @param {ASTNode|null} node - The node to check.
+ * @param {ASTNode|null} node The node to check.
* @returns {boolean} `true` if the node is an empty block.
*/
isEmptyBlock(node) {
@@ -871,8 +848,7 @@ module.exports = {
/**
* Checks whether the given node is an empty function node or not.
- *
- * @param {ASTNode|null} node - The node to check.
+ * @param {ASTNode|null} node The node to check.
* @returns {boolean} `true` if the node is an empty function.
*/
isEmptyFunction(node) {
@@ -906,8 +882,7 @@ module.exports = {
* let a = {["a" + "b"]: 1} // => null
* let a = {[tag`b`]: 1} // => null
* let a = {[`${b}`]: 1} // => null
- *
- * @param {ASTNode} node - The node to get.
+ * @param {ASTNode} node The node to get.
* @returns {string|null} The property name if static. Otherwise, null.
*/
getStaticPropertyName(node) {
@@ -950,7 +925,7 @@ module.exports = {
/**
* Get directives from directive prologue of a Program or Function node.
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {ASTNode[]} The directives found in the directive prologue.
*/
getDirectivePrologue(node) {
@@ -989,7 +964,7 @@ module.exports = {
/**
* Determines whether this node is a decimal integer literal. If a node is a decimal integer literal, a dot added
* after the node will be parsed as a decimal point, rather than a property-access dot.
- * @param {ASTNode} node - The node to check.
+ * @param {ASTNode} node The node to check.
* @returns {boolean} `true` if this node is a decimal integer.
* @example
*
@@ -1011,7 +986,7 @@ module.exports = {
/**
* Determines whether this token is a decimal integer numeric token.
* This is similar to isDecimalInteger(), but for tokens.
- * @param {Token} token - The token to check.
+ * @param {Token} token The token to check.
* @returns {boolean} `true` if this token is a decimal integer.
*/
isDecimalIntegerNumericToken(token) {
@@ -1063,8 +1038,7 @@ module.exports = {
* - `class A { static async foo() {} }` .... `static async method 'foo'`
* - `class A { static get foo() {} }` ...... `static getter 'foo'`
* - `class A { static set foo(a) {} }` ..... `static setter 'foo'`
- *
- * @param {ASTNode} node - The function node to get.
+ * @param {ASTNode} node The function node to get.
* @returns {string} The name and kind of the function node.
*/
getFunctionNameWithKind(node) {
@@ -1198,9 +1172,8 @@ module.exports = {
* ^^^^^^^^^^^^^^
* - `class A { static set foo(a) {} }`
* ^^^^^^^^^^^^^^
- *
- * @param {ASTNode} node - The function node to get.
- * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @param {ASTNode} node The function node to get.
+ * @param {SourceCode} sourceCode The source code object to get tokens.
* @returns {string} The location of the function node for reporting.
*/
getFunctionHeadLoc(node, sourceCode) {
@@ -1384,7 +1357,6 @@ module.exports = {
* "\00", "\01" ... "\09"
*
* "\0", when not followed by a digit, is not an octal escape sequence.
- *
* @param {string} rawString A string in its raw representation.
* @returns {boolean} `true` if the string contains at least one octal escape sequence.
*/
diff --git a/tools/node_modules/eslint/lib/rules/utils/fix-tracker.js b/tools/node_modules/eslint/lib/rules/utils/fix-tracker.js
index c987a28ca6..589870b39b 100644
--- a/tools/node_modules/eslint/lib/rules/utils/fix-tracker.js
+++ b/tools/node_modules/eslint/lib/rules/utils/fix-tracker.js
@@ -23,7 +23,6 @@ class FixTracker {
/**
* Create a new FixTracker.
- *
* @param {ruleFixer} fixer A ruleFixer instance.
* @param {SourceCode} sourceCode A SourceCode object for the current code.
*/
@@ -36,7 +35,6 @@ class FixTracker {
/**
* Mark the given range as "retained", meaning that other fixes may not
* may not modify this region in the same pass.
- *
* @param {int[]} range The range to retain.
* @returns {FixTracker} The same RuleFixer, for chained calls.
*/
@@ -50,7 +48,6 @@ class FixTracker {
* mark it as retained, meaning that other fixes may not modify it in this
* pass. This is useful for avoiding conflicts in fixes that modify control
* flow.
- *
* @param {ASTNode} node The node to use as a starting point.
* @returns {FixTracker} The same RuleFixer, for chained calls.
*/
@@ -65,7 +62,6 @@ class FixTracker {
* range as retained, meaning that other fixes may not modify it in this
* pass. This is useful for avoiding conflicts in fixes that make a small
* change to the code where the AST should not be changed.
- *
* @param {ASTNode|Token} nodeOrToken The node or token to use as a starting
* point. The token to the left and right are use in the range.
* @returns {FixTracker} The same RuleFixer, for chained calls.
@@ -80,7 +76,6 @@ class FixTracker {
/**
* Create a fix command that replaces the given range with the given text,
* accounting for any retained ranges.
- *
* @param {int[]} range The range to remove in the fix.
* @param {string} text The text to insert in place of the range.
* @returns {Object} The fix command.
@@ -108,7 +103,6 @@ class FixTracker {
/**
* Create a fix command that removes the given node or token, accounting for
* any retained ranges.
- *
* @param {ASTNode|Token} nodeOrToken The node or token to remove.
* @returns {Object} The fix command.
*/
diff --git a/tools/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js b/tools/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js
index e0caddb9b2..d426d85c59 100644
--- a/tools/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js
+++ b/tools/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js
@@ -10,7 +10,6 @@ const debug = require("debug")("eslint:rules");
/**
* The `Map` object that loads each rule when it's accessed.
- *
* @example
* const rules = new LazyLoadingRuleMap([
* ["eqeqeq", () => require("eqeqeq")],
diff --git a/tools/node_modules/eslint/lib/rules/vars-on-top.js b/tools/node_modules/eslint/lib/rules/vars-on-top.js
index e919d02da0..28ddae442b 100644
--- a/tools/node_modules/eslint/lib/rules/vars-on-top.js
+++ b/tools/node_modules/eslint/lib/rules/vars-on-top.js
@@ -32,8 +32,9 @@ module.exports = {
// Helpers
//--------------------------------------------------------------------------
+ // eslint-disable-next-line jsdoc/require-description
/**
- * @param {ASTNode} node - any node
+ * @param {ASTNode} node any node
* @returns {boolean} whether the given node structurally represents a directive
*/
function looksLikeDirective(node) {
@@ -43,7 +44,7 @@ module.exports = {
/**
* Check to see if its a ES6 import declaration
- * @param {ASTNode} node - any node
+ * @param {ASTNode} node any node
* @returns {boolean} whether the given node represents a import declaration
*/
function looksLikeImport(node) {
@@ -53,8 +54,7 @@ module.exports = {
/**
* Checks whether a given node is a variable declaration or not.
- *
- * @param {ASTNode} node - any node
+ * @param {ASTNode} node any node
* @returns {boolean} `true` if the node is a variable declaration.
*/
function isVariableDeclaration(node) {
@@ -70,8 +70,8 @@ module.exports = {
/**
* Checks whether this variable is on top of the block body
- * @param {ASTNode} node - The node to check
- * @param {ASTNode[]} statements - collection of ASTNodes for the parent node block
+ * @param {ASTNode} node The node to check
+ * @param {ASTNode[]} statements collection of ASTNodes for the parent node block
* @returns {boolean} True if var is on top otherwise false
*/
function isVarOnTop(node, statements) {
@@ -99,8 +99,8 @@ module.exports = {
/**
* Checks whether variable is on top at the global level
- * @param {ASTNode} node - The node to check
- * @param {ASTNode} parent - Parent of the node
+ * @param {ASTNode} node The node to check
+ * @param {ASTNode} parent Parent of the node
* @returns {void}
*/
function globalVarCheck(node, parent) {
@@ -111,9 +111,9 @@ module.exports = {
/**
* Checks whether variable is on top at functional block scope level
- * @param {ASTNode} node - The node to check
- * @param {ASTNode} parent - Parent of the node
- * @param {ASTNode} grandParent - Parent of the node's parent
+ * @param {ASTNode} node The node to check
+ * @param {ASTNode} parent Parent of the node
+ * @param {ASTNode} grandParent Parent of the node's parent
* @returns {void}
*/
function blockScopeVarCheck(node, parent, grandParent) {
diff --git a/tools/node_modules/eslint/lib/shared/config-ops.js b/tools/node_modules/eslint/lib/shared/config-ops.js
index d2ffda4b5f..3b4d5699d8 100644
--- a/tools/node_modules/eslint/lib/shared/config-ops.js
+++ b/tools/node_modules/eslint/lib/shared/config-ops.js
@@ -77,7 +77,7 @@ module.exports = {
/**
* Checks whether a given config has valid severity or not.
- * @param {number|string|Array} ruleConfig - The configuration for an individual rule.
+ * @param {number|string|Array} ruleConfig The configuration for an individual rule.
* @returns {boolean} `true` if the configuration has valid severity.
*/
isValidSeverity(ruleConfig) {
@@ -91,7 +91,7 @@ module.exports = {
/**
* Checks whether every rule of a given config has valid severity or not.
- * @param {Object} config - The configuration for rules.
+ * @param {Object} config The configuration for rules.
* @returns {boolean} `true` if the configuration has valid severity.
*/
isEverySeverityValid(config) {
diff --git a/tools/node_modules/eslint/lib/shared/runtime-info.js b/tools/node_modules/eslint/lib/shared/runtime-info.js
index 169bbc58f1..feed005330 100644
--- a/tools/node_modules/eslint/lib/shared/runtime-info.js
+++ b/tools/node_modules/eslint/lib/shared/runtime-info.js
@@ -28,8 +28,8 @@ function environment() {
/**
* Checks if a path is a child of a directory.
- * @param {string} parentPath - The parent path to check.
- * @param {string} childPath - The path to check.
+ * @param {string} parentPath The parent path to check.
+ * @param {string} childPath The path to check.
* @returns {boolean} Whether or not the given path is a child of a directory.
*/
function isChildOfDirectory(parentPath, childPath) {
@@ -38,8 +38,8 @@ function environment() {
/**
* Synchronously executes a shell command and formats the result.
- * @param {string} cmd - The command to execute.
- * @param {Array} args - The arguments to be executed with the command.
+ * @param {string} cmd The command to execute.
+ * @param {Array} args The arguments to be executed with the command.
* @returns {string} The version returned by the command.
*/
function execCommand(cmd, args) {
@@ -63,7 +63,7 @@ function environment() {
/**
* Normalizes a version number.
- * @param {string} versionStr - The string to normalize.
+ * @param {string} versionStr The string to normalize.
* @returns {string} The normalized version number.
*/
function normalizeVersionStr(versionStr) {
@@ -72,7 +72,7 @@ function environment() {
/**
* Gets bin version.
- * @param {string} bin - The bin to check.
+ * @param {string} bin The bin to check.
* @returns {string} The normalized version returned by the command.
*/
function getBinVersion(bin) {
@@ -88,8 +88,8 @@ function environment() {
/**
* Gets installed npm package version.
- * @param {string} pkg - The package to check.
- * @param {boolean} global - Whether to check globally or not.
+ * @param {string} pkg The package to check.
+ * @param {boolean} global Whether to check globally or not.
* @returns {string} The normalized version returned by the command.
*/
function getNpmPackageVersion(pkg, { global = false } = {}) {
diff --git a/tools/node_modules/eslint/lib/shared/traverser.js b/tools/node_modules/eslint/lib/shared/traverser.js
index 79fb32faf9..32f7677950 100644
--- a/tools/node_modules/eslint/lib/shared/traverser.js
+++ b/tools/node_modules/eslint/lib/shared/traverser.js
@@ -65,6 +65,7 @@ class Traverser {
this._leave = null;
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {ASTNode} The current node.
*/
@@ -72,6 +73,7 @@ class Traverser {
return this._current;
}
+ // eslint-disable-next-line jsdoc/require-description
/**
* @returns {ASTNode[]} The ancestor nodes.
*/
diff --git a/tools/node_modules/eslint/lib/source-code/source-code.js b/tools/node_modules/eslint/lib/source-code/source-code.js
index 42e7b0c2f4..86a56803ed 100644
--- a/tools/node_modules/eslint/lib/source-code/source-code.js
+++ b/tools/node_modules/eslint/lib/source-code/source-code.js
@@ -86,13 +86,13 @@ class SourceCode extends TokenStore {
/**
* Represents parsed source code.
- * @param {string|Object} textOrConfig - The source code text or config object.
- * @param {string} textOrConfig.text - The source code text.
- * @param {ASTNode} textOrConfig.ast - The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.
- * @param {Object|null} textOrConfig.parserServices - The parser services.
- * @param {ScopeManager|null} textOrConfig.scopeManager - The scope of this source code.
- * @param {Object|null} textOrConfig.visitorKeys - The visitor keys to traverse AST.
- * @param {ASTNode} [astIfNoConfig] - The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.
+ * @param {string|Object} textOrConfig The source code text or config object.
+ * @param {string} textOrConfig.text The source code text.
+ * @param {ASTNode} textOrConfig.ast The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.
+ * @param {Object|null} textOrConfig.parserServices The parser services.
+ * @param {ScopeManager|null} textOrConfig.scopeManager The scope of this source code.
+ * @param {Object|null} textOrConfig.visitorKeys The visitor keys to traverse AST.
+ * @param {ASTNode} [astIfNoConfig] The Program node of the AST representing the code. This AST should be created from the text that BOM was stripped.
*/
constructor(textOrConfig, astIfNoConfig) {
let text, ast, parserServices, scopeManager, visitorKeys;
@@ -423,7 +423,7 @@ class SourceCode extends TokenStore {
isSpaceBetweenTokens(first, second) {
const text = this.text.slice(first.range[1], second.range[0]);
- return /\s/u.test(text.replace(/\/\*.*?\*\//gu, ""));
+ return /\s/u.test(text.replace(/\/\*.*?\*\//gus, ""));
}
/**
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js
index 7c2137a176..7255a62260 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js
@@ -22,11 +22,11 @@ module.exports = class BackwardTokenCommentCursor extends Cursor {
/**
* Initializes this cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
*/
constructor(tokens, comments, indexMap, startLoc, endLoc) {
super();
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js
index 93973bce44..454a244970 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js
@@ -22,11 +22,11 @@ module.exports = class BackwardTokenCursor extends Cursor {
/**
* Initializes this cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
*/
constructor(tokens, comments, indexMap, startLoc, endLoc) {
super();
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/cursors.js b/tools/node_modules/eslint/lib/source-code/token-store/cursors.js
index b315c7e65e..30c72b69b8 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/cursors.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/cursors.js
@@ -28,8 +28,8 @@ class CursorFactory {
/**
* Initializes this cursor.
- * @param {Function} TokenCursor - The class of the cursor which iterates tokens only.
- * @param {Function} TokenCommentCursor - The class of the cursor which iterates the mix of tokens and comments.
+ * @param {Function} TokenCursor The class of the cursor which iterates tokens only.
+ * @param {Function} TokenCommentCursor The class of the cursor which iterates the mix of tokens and comments.
*/
constructor(TokenCursor, TokenCommentCursor) {
this.TokenCursor = TokenCursor;
@@ -38,13 +38,12 @@ class CursorFactory {
/**
* Creates a base cursor instance that can be decorated by createCursor.
- *
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {boolean} includeComments - The flag to iterate comments as well.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {boolean} includeComments The flag to iterate comments as well.
* @returns {Cursor} The created base cursor.
*/
createBaseCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments) {
@@ -55,16 +54,15 @@ class CursorFactory {
/**
* Creates a cursor that iterates tokens with normalized options.
- *
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {boolean} includeComments - The flag to iterate comments as well.
- * @param {Function|null} filter - The predicate function to choose tokens.
- * @param {number} skip - The count of tokens the cursor skips.
- * @param {number} count - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {boolean} includeComments The flag to iterate comments as well.
+ * @param {Function|null} filter The predicate function to choose tokens.
+ * @param {number} skip The count of tokens the cursor skips.
+ * @param {number} count The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
* @returns {Cursor} The created cursor.
*/
createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, skip, count) {
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js
index f0bff9c51d..3ee7b0b397 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js
@@ -21,7 +21,7 @@ module.exports = class DecorativeCursor extends Cursor {
/**
* Initializes this cursor.
- * @param {Cursor} cursor - The cursor to be decorated.
+ * @param {Cursor} cursor The cursor to be decorated.
*/
constructor(cursor) {
super();
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/filter-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/filter-cursor.js
index 7133627bd3..08c4f22031 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/filter-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/filter-cursor.js
@@ -21,8 +21,8 @@ module.exports = class FilterCursor extends DecorativeCursor {
/**
* Initializes this cursor.
- * @param {Cursor} cursor - The cursor to be decorated.
- * @param {Function} predicate - The predicate function to decide tokens this cursor iterates.
+ * @param {Cursor} cursor The cursor to be decorated.
+ * @param {Function} predicate The predicate function to decide tokens this cursor iterates.
*/
constructor(cursor, predicate) {
super(cursor);
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js
index be08552970..50c7a394f3 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js
@@ -22,11 +22,11 @@ module.exports = class ForwardTokenCommentCursor extends Cursor {
/**
* Initializes this cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
*/
constructor(tokens, comments, indexMap, startLoc, endLoc) {
super();
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js
index 523ed398fa..e8c1860962 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js
@@ -22,11 +22,11 @@ module.exports = class ForwardTokenCursor extends Cursor {
/**
* Initializes this cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
*/
constructor(tokens, comments, indexMap, startLoc, endLoc) {
super();
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/index.js b/tools/node_modules/eslint/lib/source-code/token-store/index.js
index 8f9b09e95e..25db8a4f4d 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/index.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/index.js
@@ -28,9 +28,8 @@ const INDEX_MAP = Symbol("indexMap");
*
* The first/last location of tokens is mapped to the index of the token.
* The first/last location of comments is mapped to the index of the next token of each comment.
- *
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
* @returns {Object} The map from locations to indices in `tokens`.
* @private
*/
@@ -62,17 +61,16 @@ function createIndexMap(tokens, comments) {
/**
* Creates the cursor iterates tokens with options.
- *
- * @param {CursorFactory} factory - The cursor factory to initialize cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {number|Function|Object} [opts=0] - The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.
- * @param {boolean} [opts.includeComments=false] - The flag to iterate comments as well.
- * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
- * @param {number} [opts.skip=0] - The count of tokens the cursor skips.
+ * @param {CursorFactory} factory The cursor factory to initialize cursor.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {number|Function|Object} [opts=0] The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments=false] The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.
+ * @param {number} [opts.skip=0] The count of tokens the cursor skips.
* @returns {Cursor} The created cursor.
* @private
*/
@@ -98,17 +96,16 @@ function createCursorWithSkip(factory, tokens, comments, indexMap, startLoc, end
/**
* Creates the cursor iterates tokens with options.
- *
- * @param {CursorFactory} factory - The cursor factory to initialize cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {number|Function|Object} [opts=0] - The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.
- * @param {boolean} [opts.includeComments] - The flag to iterate comments as well.
- * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
- * @param {number} [opts.count=0] - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+ * @param {CursorFactory} factory The cursor factory to initialize cursor.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {number|Function|Object} [opts=0] The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments] The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.
+ * @param {number} [opts.count=0] The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
* @returns {Cursor} The created cursor.
* @private
*/
@@ -138,29 +135,27 @@ function createCursorWithCount(factory, tokens, comments, indexMap, startLoc, en
/**
* Creates the cursor iterates tokens with options.
* This is overload function of the below.
- *
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {Function|Object} opts - The option object. If this is a function then it's `opts.filter`.
- * @param {boolean} [opts.includeComments] - The flag to iterate comments as well.
- * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
- * @param {number} [opts.count=0] - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {Function|Object} opts The option object. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments] The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] The predicate function to choose tokens.
+ * @param {number} [opts.count=0] The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
* @returns {Cursor} The created cursor.
* @private
*/
/**
* Creates the cursor iterates tokens with options.
- *
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {number} [beforeCount=0] - The number of tokens before the node to retrieve.
- * @param {boolean} [afterCount=0] - The number of tokens after the node to retrieve.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {number} [beforeCount=0] The number of tokens before the node to retrieve.
+ * @param {boolean} [afterCount=0] The number of tokens after the node to retrieve.
* @returns {Cursor} The created cursor.
* @private
*/
@@ -176,7 +171,7 @@ function createCursorWithPadding(tokens, comments, indexMap, startLoc, endLoc, b
/**
* Gets comment tokens that are adjacent to the current cursor position.
- * @param {Cursor} cursor - A cursor instance.
+ * @param {Cursor} cursor A cursor instance.
* @returns {Array} An array of comment tokens adjacent to the current cursor position.
* @private
*/
@@ -211,8 +206,8 @@ module.exports = class TokenStore {
/**
* Initializes this token store.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
*/
constructor(tokens, comments) {
this[TOKENS] = tokens;
@@ -226,9 +221,9 @@ module.exports = class TokenStore {
/**
* Gets the token starting at the specified index.
- * @param {number} offset - Index of the start of the token's range.
- * @param {Object} [options=0] - The option object.
- * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+ * @param {number} offset Index of the start of the token's range.
+ * @param {Object} [options=0] The option object.
+ * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.
* @returns {Token|null} The token starting at index, or null if no such token.
*/
getTokenByRangeStart(offset, options) {
@@ -250,11 +245,11 @@ module.exports = class TokenStore {
/**
* Gets the first token of the given node.
- * @param {ASTNode} node - The AST node.
- * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
- * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
- * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
- * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+ * @param {ASTNode} node The AST node.
+ * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+ * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.
+ * @param {Function|null} [options.filter=null] The predicate function to choose tokens.
+ * @param {number} [options.skip=0] The count of tokens the cursor skips.
* @returns {Token|null} An object representing the token.
*/
getFirstToken(node, options) {
@@ -271,8 +266,8 @@ module.exports = class TokenStore {
/**
* Gets the last token of the given node.
- * @param {ASTNode} node - The AST node.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstToken()
+ * @param {ASTNode} node The AST node.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()
* @returns {Token|null} An object representing the token.
*/
getLastToken(node, options) {
@@ -289,8 +284,8 @@ module.exports = class TokenStore {
/**
* Gets the token that precedes a given node or token.
- * @param {ASTNode|Token|Comment} node - The AST node or token.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstToken()
+ * @param {ASTNode|Token|Comment} node The AST node or token.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()
* @returns {Token|null} An object representing the token.
*/
getTokenBefore(node, options) {
@@ -307,8 +302,8 @@ module.exports = class TokenStore {
/**
* Gets the token that follows a given node or token.
- * @param {ASTNode|Token|Comment} node - The AST node or token.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstToken()
+ * @param {ASTNode|Token|Comment} node The AST node or token.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()
* @returns {Token|null} An object representing the token.
*/
getTokenAfter(node, options) {
@@ -325,9 +320,9 @@ module.exports = class TokenStore {
/**
* Gets the first token between two non-overlapping nodes.
- * @param {ASTNode|Token|Comment} left - Node before the desired token range.
- * @param {ASTNode|Token|Comment} right - Node after the desired token range.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstToken()
+ * @param {ASTNode|Token|Comment} left Node before the desired token range.
+ * @param {ASTNode|Token|Comment} right Node after the desired token range.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()
* @returns {Token|null} An object representing the token.
*/
getFirstTokenBetween(left, right, options) {
@@ -346,7 +341,7 @@ module.exports = class TokenStore {
* Gets the last token between two non-overlapping nodes.
* @param {ASTNode|Token|Comment} left Node before the desired token range.
* @param {ASTNode|Token|Comment} right Node after the desired token range.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstToken()
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstToken()
* @returns {Token|null} An object representing the token.
*/
getLastTokenBetween(left, right, options) {
@@ -393,11 +388,11 @@ module.exports = class TokenStore {
/**
* Gets the first `count` tokens of the given node.
- * @param {ASTNode} node - The AST node.
- * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
- * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
- * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
- * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+ * @param {ASTNode} node The AST node.
+ * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+ * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.
+ * @param {Function|null} [options.filter=null] The predicate function to choose tokens.
+ * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.
* @returns {Token[]} Tokens.
*/
getFirstTokens(node, options) {
@@ -414,8 +409,8 @@ module.exports = class TokenStore {
/**
* Gets the last `count` tokens of the given node.
- * @param {ASTNode} node - The AST node.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstTokens()
+ * @param {ASTNode} node The AST node.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()
* @returns {Token[]} Tokens.
*/
getLastTokens(node, options) {
@@ -432,8 +427,8 @@ module.exports = class TokenStore {
/**
* Gets the `count` tokens that precedes a given node or token.
- * @param {ASTNode|Token|Comment} node - The AST node or token.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstTokens()
+ * @param {ASTNode|Token|Comment} node The AST node or token.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()
* @returns {Token[]} Tokens.
*/
getTokensBefore(node, options) {
@@ -450,8 +445,8 @@ module.exports = class TokenStore {
/**
* Gets the `count` tokens that follows a given node or token.
- * @param {ASTNode|Token|Comment} node - The AST node or token.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstTokens()
+ * @param {ASTNode|Token|Comment} node The AST node or token.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()
* @returns {Token[]} Tokens.
*/
getTokensAfter(node, options) {
@@ -468,9 +463,9 @@ module.exports = class TokenStore {
/**
* Gets the first `count` tokens between two non-overlapping nodes.
- * @param {ASTNode|Token|Comment} left - Node before the desired token range.
- * @param {ASTNode|Token|Comment} right - Node after the desired token range.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstTokens()
+ * @param {ASTNode|Token|Comment} left Node before the desired token range.
+ * @param {ASTNode|Token|Comment} right Node after the desired token range.
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()
* @returns {Token[]} Tokens between left and right.
*/
getFirstTokensBetween(left, right, options) {
@@ -489,7 +484,7 @@ module.exports = class TokenStore {
* Gets the last `count` tokens between two non-overlapping nodes.
* @param {ASTNode|Token|Comment} left Node before the desired token range.
* @param {ASTNode|Token|Comment} right Node after the desired token range.
- * @param {number|Function|Object} [options=0] - The option object. Same options as getFirstTokens()
+ * @param {number|Function|Object} [options=0] The option object. Same options as getFirstTokens()
* @returns {Token[]} Tokens between left and right.
*/
getLastTokensBetween(left, right, options) {
@@ -506,18 +501,18 @@ module.exports = class TokenStore {
/**
* Gets all tokens that are related to the given node.
- * @param {ASTNode} node - The AST node.
+ * @param {ASTNode} node The AST node.
* @param {Function|Object} options The option object. If this is a function then it's `options.filter`.
- * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
- * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
- * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+ * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.
+ * @param {Function|null} [options.filter=null] The predicate function to choose tokens.
+ * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.
* @returns {Token[]} Array of objects representing tokens.
*/
/**
* Gets all tokens that are related to the given node.
- * @param {ASTNode} node - The AST node.
- * @param {int} [beforeCount=0] - The number of tokens before the node to retrieve.
- * @param {int} [afterCount=0] - The number of tokens after the node to retrieve.
+ * @param {ASTNode} node The AST node.
+ * @param {int} [beforeCount=0] The number of tokens before the node to retrieve.
+ * @param {int} [afterCount=0] The number of tokens after the node to retrieve.
* @returns {Token[]} Array of objects representing tokens.
*/
getTokens(node, beforeCount, afterCount) {
@@ -537,9 +532,9 @@ module.exports = class TokenStore {
* @param {ASTNode|Token|Comment} left Node before the desired token range.
* @param {ASTNode|Token|Comment} right Node after the desired token range.
* @param {Function|Object} options The option object. If this is a function then it's `options.filter`.
- * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
- * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
- * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+ * @param {boolean} [options.includeComments=false] The flag to iterate comments as well.
+ * @param {Function|null} [options.filter=null] The predicate function to choose tokens.
+ * @param {number} [options.count=0] The maximum count of tokens the cursor iterates.
* @returns {Token[]} Tokens between left and right.
*/
/**
@@ -567,9 +562,8 @@ module.exports = class TokenStore {
/**
* Checks whether any comments exist or not between the given 2 nodes.
- *
- * @param {ASTNode} left - The node to check.
- * @param {ASTNode} right - The node to check.
+ * @param {ASTNode} left The node to check.
+ * @param {ASTNode} right The node to check.
* @returns {boolean} `true` if one or more comments exist.
*/
commentsExistBetween(left, right) {
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/limit-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/limit-cursor.js
index efb46cf0e3..0fd92a7765 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/limit-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/limit-cursor.js
@@ -21,8 +21,8 @@ module.exports = class LimitCursor extends DecorativeCursor {
/**
* Initializes this cursor.
- * @param {Cursor} cursor - The cursor to be decorated.
- * @param {number} count - The count of tokens this cursor iterates.
+ * @param {Cursor} cursor The cursor to be decorated.
+ * @param {number} count The count of tokens this cursor iterates.
*/
constructor(cursor, count) {
super(cursor);
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js
index c083aed1e9..89349fa1c6 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js
@@ -22,13 +22,13 @@ module.exports = class PaddedTokenCursor extends ForwardTokenCursor {
/**
* Initializes this cursor.
- * @param {Token[]} tokens - The array of tokens.
- * @param {Comment[]} comments - The array of comments.
- * @param {Object} indexMap - The map from locations to indices in `tokens`.
- * @param {number} startLoc - The start location of the iteration range.
- * @param {number} endLoc - The end location of the iteration range.
- * @param {number} beforeCount - The number of tokens this cursor iterates before start.
- * @param {number} afterCount - The number of tokens this cursor iterates after end.
+ * @param {Token[]} tokens The array of tokens.
+ * @param {Comment[]} comments The array of comments.
+ * @param {Object} indexMap The map from locations to indices in `tokens`.
+ * @param {number} startLoc The start location of the iteration range.
+ * @param {number} endLoc The end location of the iteration range.
+ * @param {number} beforeCount The number of tokens this cursor iterates before start.
+ * @param {number} afterCount The number of tokens this cursor iterates after end.
*/
constructor(tokens, comments, indexMap, startLoc, endLoc, beforeCount, afterCount) {
super(tokens, comments, indexMap, startLoc, endLoc);
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/skip-cursor.js b/tools/node_modules/eslint/lib/source-code/token-store/skip-cursor.js
index ab34dfab0d..f068f531c1 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/skip-cursor.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/skip-cursor.js
@@ -21,8 +21,8 @@ module.exports = class SkipCursor extends DecorativeCursor {
/**
* Initializes this cursor.
- * @param {Cursor} cursor - The cursor to be decorated.
- * @param {number} count - The count of tokens this cursor skips.
+ * @param {Cursor} cursor The cursor to be decorated.
+ * @param {number} count The count of tokens this cursor skips.
*/
constructor(cursor, count) {
super(cursor);
diff --git a/tools/node_modules/eslint/lib/source-code/token-store/utils.js b/tools/node_modules/eslint/lib/source-code/token-store/utils.js
index 34b0a9af6d..444684b52f 100644
--- a/tools/node_modules/eslint/lib/source-code/token-store/utils.js
+++ b/tools/node_modules/eslint/lib/source-code/token-store/utils.js
@@ -16,8 +16,7 @@ const lodash = require("lodash");
/**
* Gets `token.range[0]` from the given token.
- *
- * @param {Node|Token|Comment} token - The token to get.
+ * @param {Node|Token|Comment} token The token to get.
* @returns {number} The start location.
* @private
*/
@@ -32,9 +31,8 @@ function getStartLocation(token) {
/**
* Binary-searches the index of the first token which is after the given location.
* If it was not found, this returns `tokens.length`.
- *
- * @param {(Token|Comment)[]} tokens - It searches the token in this list.
- * @param {number} location - The location to search.
+ * @param {(Token|Comment)[]} tokens It searches the token in this list.
+ * @param {number} location The location to search.
* @returns {number} The found index or `tokens.length`.
*/
exports.search = function search(tokens, location) {
@@ -48,10 +46,9 @@ exports.search = function search(tokens, location) {
/**
* Gets the index of the `startLoc` in `tokens`.
* `startLoc` can be the value of `node.range[1]`, so this checks about `startLoc - 1` as well.
- *
- * @param {(Token|Comment)[]} tokens - The tokens to find an index.
- * @param {Object} indexMap - The map from locations to indices.
- * @param {number} startLoc - The location to get an index.
+ * @param {(Token|Comment)[]} tokens The tokens to find an index.
+ * @param {Object} indexMap The map from locations to indices.
+ * @param {number} startLoc The location to get an index.
* @returns {number} The index.
*/
exports.getFirstIndex = function getFirstIndex(tokens, indexMap, startLoc) {
@@ -77,10 +74,9 @@ exports.getFirstIndex = function getFirstIndex(tokens, indexMap, startLoc) {
/**
* Gets the index of the `endLoc` in `tokens`.
* The information of end locations are recorded at `endLoc - 1` in `indexMap`, so this checks about `endLoc - 1` as well.
- *
- * @param {(Token|Comment)[]} tokens - The tokens to find an index.
- * @param {Object} indexMap - The map from locations to indices.
- * @param {number} endLoc - The location to get an index.
+ * @param {(Token|Comment)[]} tokens The tokens to find an index.
+ * @param {Object} indexMap The map from locations to indices.
+ * @param {number} endLoc The location to get an index.
* @returns {number} The index.
*/
exports.getLastIndex = function getLastIndex(tokens, indexMap, endLoc) {
diff --git a/tools/node_modules/eslint/node_modules/acorn-jsx/README.md b/tools/node_modules/eslint/node_modules/acorn-jsx/README.md
index 2bbb1d99fd..317c3ac4a5 100644
--- a/tools/node_modules/eslint/node_modules/acorn-jsx/README.md
+++ b/tools/node_modules/eslint/node_modules/acorn-jsx/README.md
@@ -1,19 +1,15 @@
# Acorn-JSX
-[![Build Status](https://travis-ci.org/RReverser/acorn-jsx.svg?branch=master)](https://travis-ci.org/RReverser/acorn-jsx)
+[![Build Status](https://travis-ci.org/acornjs/acorn-jsx.svg?branch=master)](https://travis-ci.org/acornjs/acorn-jsx)
[![NPM version](https://img.shields.io/npm/v/acorn-jsx.svg)](https://www.npmjs.org/package/acorn-jsx)
This is plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript.
-It was created as an experimental alternative, faster [React.js JSX](http://facebook.github.io/react/docs/jsx-in-depth.html) parser.
-
-According to [benchmarks](https://github.com/RReverser/acorn-jsx/blob/master/test/bench.html), Acorn-JSX is 2x faster than official [Esprima-based parser](https://github.com/facebook/esprima) when location tracking is turned on in both (call it "source maps enabled mode"). At the same time, it consumes all the ES6+JSX syntax that can be consumed by Esprima-FB (this is proved by [official tests](https://github.com/RReverser/acorn-jsx/blob/master/test/tests-jsx.js)).
-
-**UPDATE [14-Apr-2015]**: Facebook implementation started [deprecation process](https://github.com/facebook/esprima/issues/111) in favor of Acorn + Acorn-JSX + Babel for parsing and transpiling JSX syntax.
+It was created as an experimental alternative, faster [React.js JSX](http://facebook.github.io/react/docs/jsx-in-depth.html) parser. Later, it replaced the [official parser](https://github.com/facebookarchive/esprima) and these days is used by many prominent development tools.
## Transpiler
-Please note that this tool only parses source code to JSX AST, which is useful for various language tools and services. If you want to transpile your code to regular ES5-compliant JavaScript with source map, check out the [babel transpiler](https://babeljs.io/) which uses `acorn-jsx` under the hood.
+Please note that this tool only parses source code to JSX AST, which is useful for various language tools and services. If you want to transpile your code to regular ES5-compliant JavaScript with source map, check out [Babel](https://babeljs.io/) and [Buble](https://buble.surge.sh/) transpilers which use `acorn-jsx` under the hood.
## Usage
diff --git a/tools/node_modules/eslint/node_modules/acorn-jsx/index.js b/tools/node_modules/eslint/node_modules/acorn-jsx/index.js
index 460e793399..6df802bee9 100644
--- a/tools/node_modules/eslint/node_modules/acorn-jsx/index.js
+++ b/tools/node_modules/eslint/node_modules/acorn-jsx/index.js
@@ -5,40 +5,53 @@ const XHTMLEntities = require('./xhtml');
const hexNumber = /^[\da-fA-F]+$/;
const decimalNumber = /^\d+$/;
-const acorn = require("acorn");
-const tt = acorn.tokTypes;
-const TokContext = acorn.TokContext;
-const tokContexts = acorn.tokContexts;
-const TokenType = acorn.TokenType;
-const isNewLine = acorn.isNewLine;
-const isIdentifierStart = acorn.isIdentifierStart;
-const isIdentifierChar = acorn.isIdentifierChar;
-
-const tc_oTag = new TokContext('<tag', false);
-const tc_cTag = new TokContext('</tag', false);
-const tc_expr = new TokContext('<tag>...</tag>', true, true);
-
-const tok = {
- jsxName: new TokenType('jsxName'),
- jsxText: new TokenType('jsxText', {beforeExpr: true}),
- jsxTagStart: new TokenType('jsxTagStart'),
- jsxTagEnd: new TokenType('jsxTagEnd')
-}
+// The map to `acorn-jsx` tokens from `acorn` namespace objects.
+const acornJsxMap = new WeakMap();
+
+// Get the original tokens for the given `acorn` namespace object.
+function getJsxTokens(acorn) {
+ acorn = acorn.Parser.acorn || acorn;
+ let acornJsx = acornJsxMap.get(acorn);
+ if (!acornJsx) {
+ const tt = acorn.tokTypes;
+ const TokContext = acorn.TokContext;
+ const TokenType = acorn.TokenType;
+ const tc_oTag = new TokContext('<tag', false);
+ const tc_cTag = new TokContext('</tag', false);
+ const tc_expr = new TokContext('<tag>...</tag>', true, true);
+ const tokContexts = {
+ tc_oTag: tc_oTag,
+ tc_cTag: tc_cTag,
+ tc_expr: tc_expr
+ };
+ const tokTypes = {
+ jsxName: new TokenType('jsxName'),
+ jsxText: new TokenType('jsxText', {beforeExpr: true}),
+ jsxTagStart: new TokenType('jsxTagStart'),
+ jsxTagEnd: new TokenType('jsxTagEnd')
+ };
+
+ tokTypes.jsxTagStart.updateContext = function() {
+ this.context.push(tc_expr); // treat as beginning of JSX expression
+ this.context.push(tc_oTag); // start opening tag context
+ this.exprAllowed = false;
+ };
+ tokTypes.jsxTagEnd.updateContext = function(prevType) {
+ let out = this.context.pop();
+ if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) {
+ this.context.pop();
+ this.exprAllowed = this.curContext() === tc_expr;
+ } else {
+ this.exprAllowed = true;
+ }
+ };
-tok.jsxTagStart.updateContext = function() {
- this.context.push(tc_expr); // treat as beginning of JSX expression
- this.context.push(tc_oTag); // start opening tag context
- this.exprAllowed = false;
-};
-tok.jsxTagEnd.updateContext = function(prevType) {
- let out = this.context.pop();
- if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) {
- this.context.pop();
- this.exprAllowed = this.curContext() === tc_expr;
- } else {
- this.exprAllowed = true;
+ acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes };
+ acornJsxMap.set(acorn, acornJsx);
}
-};
+
+ return acornJsx;
+}
// Transforms JSX element name to string.
@@ -64,12 +77,38 @@ module.exports = function(options) {
allowNamespaces: options.allowNamespaces !== false,
allowNamespacedObjects: !!options.allowNamespacedObjects
}, Parser);
- }
+ };
};
-module.exports.tokTypes = tok;
+
+// This is `tokTypes` of the peer dep.
+// This can be different instances from the actual `tokTypes` this plugin uses.
+Object.defineProperty(module.exports, "tokTypes", {
+ get: function get_tokTypes() {
+ return getJsxTokens(require("acorn")).tokTypes;
+ },
+ configurable: true,
+ enumerable: true
+});
function plugin(options, Parser) {
+ const acorn = Parser.acorn || require("acorn");
+ const acornJsx = getJsxTokens(acorn);
+ const tt = acorn.tokTypes;
+ const tok = acornJsx.tokTypes;
+ const tokContexts = acorn.tokContexts;
+ const tc_oTag = acornJsx.tokContexts.tc_oTag;
+ const tc_cTag = acornJsx.tokContexts.tc_cTag;
+ const tc_expr = acornJsx.tokContexts.tc_expr;
+ const isNewLine = acorn.isNewLine;
+ const isIdentifierStart = acorn.isIdentifierStart;
+ const isIdentifierChar = acorn.isIdentifierChar;
+
return class extends Parser {
+ // Expose actual `tokTypes` and `tokContexts` to other plugins.
+ static get acornJsx() {
+ return acornJsx;
+ }
+
// Reads inline JSX contents token.
jsx_readToken() {
let out = '', chunkStart = this.pos;
@@ -419,7 +458,7 @@ function plugin(options, Parser) {
++this.pos;
return this.finishToken(tok.jsxTagStart);
}
- return super.readToken(code)
+ return super.readToken(code);
}
updateContext(prevType) {
@@ -427,7 +466,7 @@ function plugin(options, Parser) {
var curContext = this.curContext();
if (curContext == tc_oTag) this.context.push(tokContexts.b_expr);
else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl);
- else super.updateContext(prevType)
+ else super.updateContext(prevType);
this.exprAllowed = true;
} else if (this.type === tt.slash && prevType === tok.jsxTagStart) {
this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore
diff --git a/tools/node_modules/eslint/node_modules/acorn-jsx/package.json b/tools/node_modules/eslint/node_modules/acorn-jsx/package.json
index a8f903e4aa..55b6aadbce 100644
--- a/tools/node_modules/eslint/node_modules/acorn-jsx/package.json
+++ b/tools/node_modules/eslint/node_modules/acorn-jsx/package.json
@@ -1,14 +1,14 @@
{
"bugs": {
- "url": "https://github.com/RReverser/acorn-jsx/issues"
+ "url": "https://github.com/acornjs/acorn-jsx/issues"
},
"bundleDependencies": false,
"deprecated": false,
- "description": "Alternative, faster React.js JSX parser",
+ "description": "Modern, fast React.js JSX parser",
"devDependencies": {
"acorn": "^7.0.0"
},
- "homepage": "https://github.com/RReverser/acorn-jsx",
+ "homepage": "https://github.com/acornjs/acorn-jsx",
"license": "MIT",
"maintainers": [
{
@@ -23,10 +23,10 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/RReverser/acorn-jsx.git"
+ "url": "git+https://github.com/acornjs/acorn-jsx.git"
},
"scripts": {
"test": "node test/run.js"
},
- "version": "5.0.2"
+ "version": "5.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/index.js b/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
index f201915dee..4638bbc3d6 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
@@ -1,12 +1,15 @@
'use strict';
-const x = module.exports;
+const ansiEscapes = module.exports;
+// TODO: remove this in the next major version
+module.exports.default = ansiEscapes;
+
const ESC = '\u001B[';
const OSC = '\u001B]';
const BEL = '\u0007';
const SEP = ';';
const isTerminalApp = process.env.TERM_PROGRAM === 'Apple_Terminal';
-x.cursorTo = (x, y) => {
+ansiEscapes.cursorTo = (x, y) => {
if (typeof x !== 'number') {
throw new TypeError('The `x` argument is required');
}
@@ -18,7 +21,7 @@ x.cursorTo = (x, y) => {
return ESC + (y + 1) + ';' + (x + 1) + 'H';
};
-x.cursorMove = (x, y) => {
+ansiEscapes.cursorMove = (x, y) => {
if (typeof x !== 'number') {
throw new TypeError('The `x` argument is required');
}
@@ -40,56 +43,56 @@ x.cursorMove = (x, y) => {
return ret;
};
-x.cursorUp = count => ESC + (typeof count === 'number' ? count : 1) + 'A';
-x.cursorDown = count => ESC + (typeof count === 'number' ? count : 1) + 'B';
-x.cursorForward = count => ESC + (typeof count === 'number' ? count : 1) + 'C';
-x.cursorBackward = count => ESC + (typeof count === 'number' ? count : 1) + 'D';
-
-x.cursorLeft = ESC + 'G';
-x.cursorSavePosition = ESC + (isTerminalApp ? '7' : 's');
-x.cursorRestorePosition = ESC + (isTerminalApp ? '8' : 'u');
-x.cursorGetPosition = ESC + '6n';
-x.cursorNextLine = ESC + 'E';
-x.cursorPrevLine = ESC + 'F';
-x.cursorHide = ESC + '?25l';
-x.cursorShow = ESC + '?25h';
-
-x.eraseLines = count => {
+ansiEscapes.cursorUp = (count = 1) => ESC + count + 'A';
+ansiEscapes.cursorDown = (count = 1) => ESC + count + 'B';
+ansiEscapes.cursorForward = (count = 1) => ESC + count + 'C';
+ansiEscapes.cursorBackward = (count = 1) => ESC + count + 'D';
+
+ansiEscapes.cursorLeft = ESC + 'G';
+ansiEscapes.cursorSavePosition = isTerminalApp ? '\u001B7' : ESC + 's';
+ansiEscapes.cursorRestorePosition = isTerminalApp ? '\u001B8' : ESC + 'u';
+ansiEscapes.cursorGetPosition = ESC + '6n';
+ansiEscapes.cursorNextLine = ESC + 'E';
+ansiEscapes.cursorPrevLine = ESC + 'F';
+ansiEscapes.cursorHide = ESC + '?25l';
+ansiEscapes.cursorShow = ESC + '?25h';
+
+ansiEscapes.eraseLines = count => {
let clear = '';
for (let i = 0; i < count; i++) {
- clear += x.eraseLine + (i < count - 1 ? x.cursorUp() : '');
+ clear += ansiEscapes.eraseLine + (i < count - 1 ? ansiEscapes.cursorUp() : '');
}
if (count) {
- clear += x.cursorLeft;
+ clear += ansiEscapes.cursorLeft;
}
return clear;
};
-x.eraseEndLine = ESC + 'K';
-x.eraseStartLine = ESC + '1K';
-x.eraseLine = ESC + '2K';
-x.eraseDown = ESC + 'J';
-x.eraseUp = ESC + '1J';
-x.eraseScreen = ESC + '2J';
-x.scrollUp = ESC + 'S';
-x.scrollDown = ESC + 'T';
+ansiEscapes.eraseEndLine = ESC + 'K';
+ansiEscapes.eraseStartLine = ESC + '1K';
+ansiEscapes.eraseLine = ESC + '2K';
+ansiEscapes.eraseDown = ESC + 'J';
+ansiEscapes.eraseUp = ESC + '1J';
+ansiEscapes.eraseScreen = ESC + '2J';
+ansiEscapes.scrollUp = ESC + 'S';
+ansiEscapes.scrollDown = ESC + 'T';
-x.clearScreen = '\u001Bc';
+ansiEscapes.clearScreen = '\u001Bc';
-x.clearTerminal = process.platform === 'win32' ?
- `${x.eraseScreen}${ESC}0f` :
+ansiEscapes.clearTerminal = process.platform === 'win32' ?
+ `${ansiEscapes.eraseScreen}${ESC}0f` :
// 1. Erases the screen (Only done in case `2` is not supported)
// 2. Erases the whole screen including scrollback buffer
// 3. Moves cursor to the top-left position
// More info: https://www.real-world-systems.com/docs/ANSIcode.html
- `${x.eraseScreen}${ESC}3J${ESC}H`;
+ `${ansiEscapes.eraseScreen}${ESC}3J${ESC}H`;
-x.beep = BEL;
+ansiEscapes.beep = BEL;
-x.link = (text, url) => {
+ansiEscapes.link = (text, url) => {
return [
OSC,
'8',
@@ -106,26 +109,24 @@ x.link = (text, url) => {
].join('');
};
-x.image = (buf, opts) => {
- opts = opts || {};
-
- let ret = OSC + '1337;File=inline=1';
+ansiEscapes.image = (buffer, options = {}) => {
+ let ret = `${OSC}1337;File=inline=1`;
- if (opts.width) {
- ret += `;width=${opts.width}`;
+ if (options.width) {
+ ret += `;width=${options.width}`;
}
- if (opts.height) {
- ret += `;height=${opts.height}`;
+ if (options.height) {
+ ret += `;height=${options.height}`;
}
- if (opts.preserveAspectRatio === false) {
+ if (options.preserveAspectRatio === false) {
ret += ';preserveAspectRatio=0';
}
- return ret + ':' + buf.toString('base64') + BEL;
+ return ret + ':' + buffer.toString('base64') + BEL;
};
-x.iTerm = {};
-
-x.iTerm.setCwd = cwd => OSC + '50;CurrentDir=' + (cwd || process.cwd()) + BEL;
+ansiEscapes.iTerm = {
+ setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`
+};
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/package.json b/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
index d1ba760b8b..a58ed743a5 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
@@ -8,17 +8,23 @@
"url": "https://github.com/sindresorhus/ansi-escapes/issues"
},
"bundleDependencies": false,
+ "dependencies": {
+ "type-fest": "^0.5.2"
+ },
"deprecated": false,
"description": "ANSI escape codes for manipulating the terminal",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "@types/node": "^12.0.7",
+ "ava": "^2.1.0",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/ansi-escapes#readme",
"keywords": [
@@ -53,7 +59,7 @@
"url": "git+https://github.com/sindresorhus/ansi-escapes.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "3.2.0"
+ "version": "4.2.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md b/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
index 513ef60826..b290753094 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
@@ -23,11 +23,11 @@ process.stdout.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft);
## API
-### cursorTo(x, [y])
+### cursorTo(x, y?)
Set the absolute position of the cursor. `x0` `y0` is the top left of the screen.
-### cursorMove(x, [y])
+### cursorMove(x, y?)
Set the position of the cursor relative to its current position.
@@ -41,11 +41,11 @@ Move cursor down a specific amount of rows. Default is `1`.
### cursorForward(count)
-Move cursor forward a specific amount of rows. Default is `1`.
+Move cursor forward a specific amount of columns. Default is `1`.
### cursorBackward(count)
-Move cursor backward a specific amount of rows. Default is `1`.
+Move cursor backward a specific amount of columns. Default is `1`.
### cursorLeft
@@ -133,7 +133,7 @@ Create a clickable link.
[Supported terminals.](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) Use [`supports-hyperlinks`](https://github.com/jamestalmage/supports-hyperlinks) to detect link support.
-### image(input, [options])
+### image(filePath, options?)
Display an image.
@@ -149,10 +149,12 @@ Buffer of an image. Usually read in with `fs.readFile()`.
#### options
+Type: `object`
+
##### width
##### height
-Type: `string` `number`
+Type: `string | number`
The width and height are given as a number followed by a unit, or the word "auto".
@@ -166,7 +168,7 @@ The width and height are given as a number followed by a unit, or the word "auto
Type: `boolean`<br>
Default: `true`
-### iTerm.setCwd([path])
+### iTerm.setCwd(path?)
Type: `string`<br>
Default: `process.cwd()`
@@ -179,6 +181,14 @@ Default: `process.cwd()`
- [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
-## License
+---
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-escapes?utm_source=npm-ansi-escapes&utm_medium=referral&utm_campaign=readme">Get professional support for this package 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>
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/ansi-regex/index.js
index c4aaecf505..c25448009f 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/index.js
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/index.js
@@ -1,10 +1,14 @@
'use strict';
-module.exports = () => {
+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-PRZcf-ntqry=><~]))'
+ '[\\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, 'g');
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
};
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/ansi-regex/package.json
index d4df7d97af..db8f3cc8c7 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/package.json
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/package.json
@@ -11,11 +11,11 @@
"deprecated": false,
"description": "Regular expression for matching ANSI escape codes",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
},
"files": [
"index.js"
@@ -58,5 +58,5 @@
"test": "xo && ava",
"view-supported": "node fixtures/view-codes.js"
},
- "version": "3.0.0"
+ "version": "4.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
index 22db1c3405..d19c44667e 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
@@ -2,6 +2,20 @@
> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package 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
@@ -23,9 +37,31 @@ ansiRegex().test('cake');
'\u001B[4mcake\u001B[0m'.match(ansiRegex());
//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+
+'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
+//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
```
+## 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?
@@ -35,6 +71,11 @@ Some of the codes we run as a test are codes that we acquired finding various li
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.
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
## Maintainers
- [Sindre Sorhus](https://github.com/sindresorhus)
diff --git a/tools/node_modules/eslint/node_modules/cli-cursor/index.js b/tools/node_modules/eslint/node_modules/cli-cursor/index.js
index 6284a82896..710c405174 100644
--- a/tools/node_modules/eslint/node_modules/cli-cursor/index.js
+++ b/tools/node_modules/eslint/node_modules/cli-cursor/index.js
@@ -1,39 +1,35 @@
'use strict';
const restoreCursor = require('restore-cursor');
-let hidden = false;
+let isHidden = false;
-exports.show = stream => {
- const s = stream || process.stderr;
-
- if (!s.isTTY) {
+exports.show = (writableStream = process.stderr) => {
+ if (!writableStream.isTTY) {
return;
}
- hidden = false;
- s.write('\u001b[?25h');
+ isHidden = false;
+ writableStream.write('\u001B[?25h');
};
-exports.hide = stream => {
- const s = stream || process.stderr;
-
- if (!s.isTTY) {
+exports.hide = (writableStream = process.stderr) => {
+ if (!writableStream.isTTY) {
return;
}
restoreCursor();
- hidden = true;
- s.write('\u001b[?25l');
+ isHidden = true;
+ writableStream.write('\u001B[?25l');
};
-exports.toggle = (force, stream) => {
+exports.toggle = (force, writableStream) => {
if (force !== undefined) {
- hidden = force;
+ isHidden = force;
}
- if (hidden) {
- exports.show(stream);
+ if (isHidden) {
+ exports.show(writableStream);
} else {
- exports.hide(stream);
+ exports.hide(writableStream);
}
};
diff --git a/tools/node_modules/eslint/node_modules/cli-cursor/license b/tools/node_modules/eslint/node_modules/cli-cursor/license
index 654d0bfe94..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/cli-cursor/license
+++ b/tools/node_modules/eslint/node_modules/cli-cursor/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+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:
+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 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.
+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/cli-cursor/package.json b/tools/node_modules/eslint/node_modules/cli-cursor/package.json
index 44efffe03b..f67104cccb 100644
--- a/tools/node_modules/eslint/node_modules/cli-cursor/package.json
+++ b/tools/node_modules/eslint/node_modules/cli-cursor/package.json
@@ -9,19 +9,22 @@
},
"bundleDependencies": false,
"dependencies": {
- "restore-cursor": "^2.0.0"
+ "restore-cursor": "^3.1.0"
},
"deprecated": false,
"description": "Toggle the CLI cursor",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "@types/node": "^12.0.7",
+ "ava": "^2.1.0",
+ "tsd": "^0.7.2",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/cli-cursor#readme",
"keywords": [
@@ -46,10 +49,7 @@
"url": "git+https://github.com/sindresorhus/cli-cursor.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "2.1.0",
- "xo": {
- "esnext": true
- }
+ "version": "3.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/cli-cursor/readme.md b/tools/node_modules/eslint/node_modules/cli-cursor/readme.md
index 75c18e5fea..3478ac80e5 100644
--- a/tools/node_modules/eslint/node_modules/cli-cursor/readme.md
+++ b/tools/node_modules/eslint/node_modules/cli-cursor/readme.md
@@ -8,7 +8,7 @@ The cursor is [gracefully restored](https://github.com/sindresorhus/restore-curs
## Install
```
-$ npm install --save cli-cursor
+$ npm install cli-cursor
```
@@ -26,20 +26,30 @@ cliCursor.toggle(unicornsAreAwesome);
## API
-### .show([stream])
+### .show(stream?)
-### .hide([stream])
+### .hide(stream?)
-### .toggle(force, [stream])
+### .toggle(force?, stream?)
-`force` is useful to show or hide the cursor based on a boolean.
+#### force
+
+Useful for showing or hiding the cursor based on a boolean.
#### stream
-Type: `Stream`<br>
+Type: `stream.Writable`<br>
Default: `process.stderr`
-## License
+---
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-cli-cursor?utm_source=npm-cli-cursor&utm_medium=referral&utm_campaign=readme">Get professional support for this package 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>
diff --git a/tools/node_modules/eslint/node_modules/emoji-regex/README.md b/tools/node_modules/eslint/node_modules/emoji-regex/README.md
index 37cf14e01f..f10e173335 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/README.md
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/README.md
@@ -2,7 +2,7 @@
_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.
+This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
## Installation
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
index 0216db9587..b4cf3dcd38 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/index.js
@@ -2,5 +2,5 @@
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;
+ return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\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{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\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}]|\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{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\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{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\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{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\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{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\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{1F9CD}-\u{1F9CF}\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{1F46B}-\u{1F46D}\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{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\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{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*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{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\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{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\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{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\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
index d0a771d36e..780309df58 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/es2015/text.js
@@ -2,5 +2,5 @@
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;
+ return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\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{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\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{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\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}]|\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{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\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{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\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{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\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{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\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{1F9CD}-\u{1F9CF}\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{1F46B}-\u{1F46D}\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{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\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{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*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{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\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{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\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{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\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
index e2237a4e80..d993a3a99c 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/index.js
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/index.js
@@ -2,5 +2,5 @@
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;
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\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])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\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[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\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\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\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\uDDCD-\uDDCF\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\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\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\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*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\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\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
index 439b65e435..eecc5eb318 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/package.json
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/package.json
@@ -10,14 +10,13 @@
"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",
+ "@babel/cli": "^7.2.3",
+ "@babel/core": "^7.3.4",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+ "@babel/preset-env": "^7.3.4",
+ "mocha": "^6.0.2",
"regexgen": "^1.3.0",
- "unicode-11.0.0": "^0.7.7",
- "unicode-tr51": "^9.0.1"
+ "unicode-12.0.0": "^0.7.9"
},
"files": [
"LICENSE-MIT.txt",
@@ -51,5 +50,5 @@
"test:watch": "npm run test -- --watch"
},
"types": "index.d.ts",
- "version": "7.0.3"
+ "version": "8.0.0"
} \ 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
index 199ae3be35..0a55ce2f23 100644
--- a/tools/node_modules/eslint/node_modules/emoji-regex/text.js
+++ b/tools/node_modules/eslint/node_modules/emoji-regex/text.js
@@ -2,5 +2,5 @@
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;
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\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])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\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[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\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\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\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\uDDCD-\uDDCF\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\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\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\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*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\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
};
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md
index aa5e2b8ff7..22f5099b65 100644
--- a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md
@@ -32,42 +32,46 @@ eslint --ext md .
It will lint `js`, `javascript`, `jsx`, or `node` [fenced code blocks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks) in your Markdown documents:
- ```js
- // This gets linted
- var answer = 6 * 7;
- console.log(answer);
- ```
+````markdown
+```js
+// This gets linted
+var answer = 6 * 7;
+console.log(answer);
+```
- ```JavaScript
- // This also gets linted
+```JavaScript
+// This also gets linted
- /* eslint quotes: [2, "double"] */
+/* eslint quotes: [2, "double"] */
- function hello() {
- console.log("Hello, world!");
- }
- hello();
- ```
+function hello() {
+ console.log("Hello, world!");
+}
+hello();
+```
- ```jsx
- // This gets linted too
- var div = <div className="jsx"></div>;
- ```
+```jsx
+// This gets linted too
+var div = <div className="jsx"></div>;
+```
- ```node
- // And this
- console.log(process.version);
- ```
+```node
+// And this
+console.log(process.version);
+```
+````
Blocks that don't specify either `js`, `javascript`, `jsx`, or `node` syntax are ignored:
- ```
- This is plain text and doesn't get linted.
- ```
+````markdown
+```
+This is plain text and doesn't get linted.
+```
- ```python
- print("This doesn't get linted either.")
- ```
+```python
+print("This doesn't get linted either.")
+```
+````
## Configuration Comments
@@ -75,52 +79,58 @@ The processor will convert HTML comments immediately preceding a code block into
This example enables the `browser` environment, disables the `no-alert` rule, and configures the `quotes` rule to prefer single quotes:
- <!-- eslint-env browser -->
- <!-- eslint-disable no-alert -->
- <!-- eslint quotes: ["error", "single"] -->
+````markdown
+<!-- eslint-env browser -->
+<!-- eslint-disable no-alert -->
+<!-- eslint quotes: ["error", "single"] -->
- ```js
- alert('Hello, world!');
- ```
+```js
+alert('Hello, world!');
+```
+````
Each code block in a file is linted separately, so configuration comments apply only to the code block that immediately follows.
- Assuming `no-alert` is enabled in `.eslintrc`, the first code block will have no error from `no-alert`:
+````markdown
+Assuming `no-alert` is enabled in `.eslintrc`, the first code block will have no error from `no-alert`:
- <!-- eslint-env browser -->
- <!-- eslint-disable no-alert -->
+<!-- eslint-env browser -->
+<!-- eslint-disable no-alert -->
- ```js
- alert("Hello, world!");
- ```
+```js
+alert("Hello, world!");
+```
- But the next code block will have an error from `no-alert`:
+But the next code block will have an error from `no-alert`:
- <!-- eslint-env browser -->
+<!-- eslint-env browser -->
- ```js
- alert("Hello, world!");
- ```
+```js
+alert("Hello, world!");
+```
+````
## Skipping Blocks
Sometimes it can be useful to have code blocks marked with `js` even though they don't contain valid JavaScript syntax, such as commented JSON blobs that need `js` syntax highlighting. Standard `eslint-disable` comments only silence rule reporting, but ESLint still reports any syntax errors it finds. In cases where a code block should not even be parsed, insert a non-standard `<!-- eslint-skip -->` comment before the block, and this plugin will hide the following block from ESLint. Neither rule nor syntax errors will be reported.
- There are comments in this JSON, so we use `js` syntax for better
- highlighting. Skip the block to prevent warnings about invalid syntax.
+````markdown
+There are comments in this JSON, so we use `js` syntax for better
+highlighting. Skip the block to prevent warnings about invalid syntax.
- <!-- eslint-skip -->
+<!-- eslint-skip -->
- ```js
- {
- // This code block is hidden from ESLint.
- "hello": "world"
- }
- ```
+```js
+{
+ // This code block is hidden from ESLint.
+ "hello": "world"
+}
+```
- ```js
- console.log("This code block is linted normally.");
- ```
+```js
+console.log("This code block is linted normally.");
+```
+````
## Fix issues automatically
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js
index 890425ff8a..e27aa162f9 100644
--- a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js
@@ -5,10 +5,10 @@
"use strict";
-var processor = require("./processor");
+const processor = require("./processor");
module.exports = {
- "processors": {
+ processors: {
".markdown": processor,
".mdown": processor,
".mkdn": processor,
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js
index a3c9e06da2..8efcc55b9a 100644
--- a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js
@@ -5,37 +5,35 @@
"use strict";
-var assign = require("object-assign");
-var unified = require("unified");
-var remarkParse = require("remark-parse");
+const assign = require("object-assign");
+const unified = require("unified");
+const remarkParse = require("remark-parse");
-var SUPPORTED_SYNTAXES = ["js", "javascript", "node", "jsx"];
-var UNSATISFIABLE_RULES = [
+const SUPPORTED_SYNTAXES = ["js", "javascript", "node", "jsx"];
+const UNSATISFIABLE_RULES = [
"eol-last", // The Markdown parser strips trailing newlines in code fences
"unicode-bom" // Code blocks will begin in the middle of Markdown files
];
-var SUPPORTS_AUTOFIX = true;
+const SUPPORTS_AUTOFIX = true;
-var markdown = unified().use(remarkParse);
+const markdown = unified().use(remarkParse);
-var blocks = [];
+let blocks = [];
/**
* Performs a depth-first traversal of the Markdown AST.
* @param {ASTNode} node A Markdown AST node.
- * @param {object} callbacks A map of node types to callbacks.
- * @param {object} [parent] The node's parent AST node.
+ * @param {Object} callbacks A map of node types to callbacks.
+ * @param {Object} [parent] The node's parent AST node.
* @returns {void}
*/
function traverse(node, callbacks, parent) {
- var i;
-
if (callbacks[node.type]) {
callbacks[node.type](node, parent);
}
if (typeof node.children !== "undefined") {
- for (i = 0; i < node.children.length; i++) {
+ for (let i = 0; i < node.children.length; i++) {
traverse(node.children[i], callbacks, node);
}
}
@@ -47,9 +45,9 @@ function traverse(node, callbacks, parent) {
* @returns {string[]} An array of JS block comments.
*/
function getComment(html) {
- var commentStart = "<!--";
- var commentEnd = "-->";
- var regex = /^(eslint\b|global\s)/;
+ const commentStart = "<!--";
+ const commentEnd = "-->";
+ const regex = /^(eslint\b|global\s)/;
if (
html.slice(0, commentStart.length) !== commentStart ||
@@ -58,16 +56,42 @@ function getComment(html) {
return "";
}
- html = html.slice(commentStart.length, -commentEnd.length);
+ const comment = html.slice(commentStart.length, -commentEnd.length);
- if (!regex.test(html.trim())) {
+ if (!regex.test(comment.trim())) {
return "";
}
- return html;
+ return comment;
}
-var leadingWhitespaceRegex = /^\s*/;
+// Before a code block, blockquote characters (`>`) are also considered
+// "whitespace".
+const leadingWhitespaceRegex = /^[>\s]*/;
+
+/**
+ * Gets the offset for the first column of the node's first line in the
+ * original source text.
+ * @param {ASTNode} node A Markdown code block AST node.
+ * @returns {number} The offset for the first column of the node's first line.
+ */
+function getBeginningOfLineOffset(node) {
+ return node.position.start.offset - node.position.start.column + 1;
+}
+
+/**
+ * Gets the leading text, typically whitespace with possible blockquote chars,
+ * used to indent a code block.
+ * @param {string} text The text of the file.
+ * @param {ASTNode} node A Markdown code block AST node.
+ * @returns {string} The text from the start of the first line to the opening
+ * fence of the code block.
+ */
+function getIndentText(text, node) {
+ return leadingWhitespaceRegex.exec(
+ text.slice(getBeginningOfLineOffset(node))
+ )[0];
+}
/**
* When applying fixes, the postprocess step needs to know how to map fix ranges
@@ -97,24 +121,12 @@ var leadingWhitespaceRegex = /^\s*/;
* @param {ASTNode} node A Markdown code block AST node.
* @param {comments} comments List of configuration comment strings that will be
* inserted at the beginning of the code block.
- * @returns {object[]} A list of offset-based adjustments, where lookups are
+ * @returns {Object[]} A list of offset-based adjustments, where lookups are
* done based on the `js` key, which represents the range in the linted JS,
* and the `md` key is the offset delta that, when added to the JS range,
* returns the corresponding location in the original Markdown source.
*/
function getBlockRangeMap(text, node, comments) {
- var baseIndent,
- code,
- commentLength,
- i,
- jsOffset,
- leadingWhitespaceLength,
- line,
- lines,
- mdOffset,
- rangeMap,
- startOffset,
- trimLength;
/*
* The parser sets the fenced code block's start offset to wherever content
@@ -124,14 +136,14 @@ function getBlockRangeMap(text, node, comments) {
* additional indenting, the opening fence's first backtick may be up to
* three whitespace characters after the start offset.
*/
- startOffset = node.position.start.offset;
+ const startOffset = getBeginningOfLineOffset(node);
/*
* Extract the Markdown source to determine the leading whitespace for each
* line.
*/
- code = text.slice(startOffset, node.position.end.offset);
- lines = code.split("\n");
+ const code = text.slice(startOffset, node.position.end.offset);
+ const lines = code.split("\n");
/*
* The parser trims leading whitespace from each line of code within the
@@ -139,16 +151,13 @@ function getBlockRangeMap(text, node, comments) {
* backtick's column is the AST node's starting column plus any additional
* indentation.
*/
- baseIndent = node.position.start.column - 1
- + leadingWhitespaceRegex.exec(lines[0])[0].length;
+ const baseIndent = getIndentText(text, node).length;
/*
* Track the length of any inserted configuration comments at the beginning
* of the linted JS and start the JS offset lookup keys at this index.
*/
- commentLength = comments.reduce(function(len, comment) {
- return len + comment.length + 1;
- }, 0);
+ const commentLength = comments.reduce((len, comment) => len + comment.length + 1, 0);
/*
* In case there are configuration comments, initialize the map so that the
@@ -156,35 +165,37 @@ function getBlockRangeMap(text, node, comments) {
* the lookup index will also be 0, and the lookup should always go to the
* last range that matches, skipping this initialization entry.
*/
- rangeMap = [{
+ const rangeMap = [{
js: 0,
md: 0
}];
// Start the JS offset after any configuration comments.
- jsOffset = commentLength;
+ let jsOffset = commentLength;
/*
* Start the Markdown offset at the beginning of the block's first line of
* actual code. The first line of the block is always the opening fence, so
* the code begins on the second line.
*/
- mdOffset = startOffset + lines[0].length + 1;
+ let mdOffset = startOffset + lines[0].length + 1;
/*
* For each line, determine how much leading whitespace was trimmed due to
* indentation. Increase the JS lookup offset by the length of the line
* post-trimming and the Markdown offset by the total line length.
*/
- for (i = 0; i + 1 < lines.length; i++) {
- line = lines[i + 1];
- leadingWhitespaceLength = leadingWhitespaceRegex.exec(line)[0].length;
+ for (let i = 0; i + 1 < lines.length; i++) {
+ const line = lines[i + 1];
+ const leadingWhitespaceLength = leadingWhitespaceRegex.exec(line)[0].length;
+
// The parser trims leading whitespace up to the level of the opening
// fence, so keep any additional indentation beyond that.
- trimLength = Math.min(baseIndent, leadingWhitespaceLength);
+ const trimLength = Math.min(baseIndent, leadingWhitespaceLength);
rangeMap.push({
js: jsOffset,
+
// Advance `trimLength` character from the beginning of the Markdown
// line to the beginning of the equivalent JS line, then compute the
// delta.
@@ -196,6 +207,7 @@ function getBlockRangeMap(text, node, comments) {
mdOffset += line.length + 1;
jsOffset += line.length - trimLength + 1;
}
+
return rangeMap;
}
@@ -205,19 +217,19 @@ function getBlockRangeMap(text, node, comments) {
* @returns {string[]} Source code strings to lint.
*/
function preprocess(text) {
- var ast = markdown.parse(text);
+ const ast = markdown.parse(text);
blocks = [];
traverse(ast, {
- "code": function(node, parent) {
- var comments = [];
- var index, previousNode, comment;
+ code(node, parent) {
+ const comments = [];
if (node.lang && SUPPORTED_SYNTAXES.indexOf(node.lang.split(" ")[0].toLowerCase()) >= 0) {
- index = parent.children.indexOf(node) - 1;
- previousNode = parent.children[index];
+ let index = parent.children.indexOf(node) - 1;
+ let previousNode = parent.children[index];
+
while (previousNode && previousNode.type === "html") {
- comment = getComment(previousNode.value);
+ const comment = getComment(previousNode.value);
if (!comment) {
break;
@@ -227,35 +239,36 @@ function preprocess(text) {
return;
}
- comments.unshift("/*" + comment + "*/");
+ comments.unshift(`/*${comment}*/`);
index--;
previousNode = parent.children[index];
}
blocks.push(assign({}, node, {
- comments: comments,
+ baseIndentText: getIndentText(text, node),
+ comments,
rangeMap: getBlockRangeMap(text, node, comments)
}));
}
}
});
- return blocks.map(function(block) {
- return block.comments.concat(block.value).concat("").join("\n");
- });
+ return blocks.map(block => [
+ ...block.comments,
+ block.value,
+ ""
+ ].join("\n"));
}
/**
* Creates a map function that adjusts messages in a code block.
* @param {Block} block A code block.
- * @returns {function} A function that adjusts messages in a code block.
+ * @returns {Function} A function that adjusts messages in a code block.
*/
function adjustBlock(block) {
- var leadingCommentLines = block.comments.reduce(function(count, comment) {
- return count + comment.split("\n").length;
- }, 0);
+ const leadingCommentLines = block.comments.reduce((count, comment) => count + comment.split("\n").length, 0);
- var blockStart = block.position.start.line;
+ const blockStart = block.position.start.line;
/**
* Adjusts ESLint messages to point to the correct location in the Markdown.
@@ -264,34 +277,38 @@ function adjustBlock(block) {
*/
return function adjustMessage(message) {
- var lineInCode = message.line - leadingCommentLines;
- var endLine = message.endLine - leadingCommentLines;
+ const lineInCode = message.line - leadingCommentLines;
+ const endLine = message.endLine - leadingCommentLines;
+
if (lineInCode < 1) {
return null;
}
- var out = {
+ const out = {
line: lineInCode + blockStart,
endLine: endLine ? endLine + blockStart : endLine,
column: message.column + block.position.indent[lineInCode - 1] - 1
};
- var adjustedFix = {};
+ const adjustedFix = {};
+
if (message.fix) {
adjustedFix.fix = {
- range: message.fix.range.map(function(range) {
+ range: message.fix.range.map(range => {
+
// Advance through the block's range map to find the last
// matching range by finding the first range too far and
// then going back one.
- var i = 1;
- while (i < block.rangeMap.length && block.rangeMap[i].js < range) {
+ let i = 1;
+
+ while (i < block.rangeMap.length && block.rangeMap[i].js <= range) {
i++;
}
// Apply the mapping delta for this range.
return range + block.rangeMap[i - 1].md;
}),
- text: message.fix.text
+ text: message.fix.text.replace("\n", `\n${block.baseIndentText}`)
};
}
@@ -315,14 +332,15 @@ function excludeUnsatisfiableRules(message) {
* @returns {Message[]} A flattened array of messages with mapped locations.
*/
function postprocess(messages) {
- return [].concat.apply([], messages.map(function(group, i) {
- var adjust = adjustBlock(blocks[i]);
+ return [].concat(...messages.map((group, i) => {
+ const adjust = adjustBlock(blocks[i]);
+
return group.map(adjust).filter(excludeUnsatisfiableRules);
}));
}
module.exports = {
- preprocess: preprocess,
- postprocess: postprocess,
+ preprocess,
+ postprocess,
supportsAutofix: SUPPORTS_AUTOFIX
};
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json
index 2fb0406aa2..93aa90513d 100644
--- a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json
@@ -17,7 +17,8 @@
"devDependencies": {
"chai": "^3.0.0",
"eslint": "^4.19.1",
- "eslint-config-eslint": "^3.0.0",
+ "eslint-config-eslint": "^5.0.1",
+ "eslint-plugin-node": "^6.0.1",
"eslint-release": "^1.0.0",
"istanbul": "^0.4.5",
"mocha": "^2.2.5"
@@ -55,5 +56,5 @@
"test": "npm run lint && npm run test-cov",
"test-cov": "istanbul cover _mocha -- -c tests/lib/**/*.js"
},
- "version": "1.0.0"
+ "version": "1.0.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/eslint-utils/README.md b/tools/node_modules/eslint/node_modules/eslint-utils/README.md
index 7069f04f73..0358380624 100644
--- a/tools/node_modules/eslint/node_modules/eslint-utils/README.md
+++ b/tools/node_modules/eslint/node_modules/eslint-utils/README.md
@@ -2,7 +2,7 @@
[![npm version](https://img.shields.io/npm/v/eslint-utils.svg)](https://www.npmjs.com/package/eslint-utils)
[![Downloads/month](https://img.shields.io/npm/dm/eslint-utils.svg)](http://www.npmtrends.com/eslint-utils)
-[![Build Status](https://travis-ci.org/mysticatea/eslint-utils.svg?branch=master)](https://travis-ci.org/mysticatea/eslint-utils)
+[![Build Status](https://github.com/mysticatea/eslint-utils/workflows/CI/badge.svg)](https://github.com/mysticatea/eslint-utils/actions)
[![Coverage Status](https://codecov.io/gh/mysticatea/eslint-utils/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/eslint-utils)
[![Dependency Status](https://david-dm.org/mysticatea/eslint-utils.svg)](https://david-dm.org/mysticatea/eslint-utils)
@@ -12,13 +12,13 @@ This package provides utility functions and classes for make ESLint custom rules
For examples:
-- [getStaticValue](https://mysticatea.github.io/eslint-utils/api/ast-utils.html#getstaticvalue) evaluates static value on AST.
-- [PatternMatcher](https://mysticatea.github.io/eslint-utils/api/ast-utils.html#patternmatcher-class) finds a regular expression pattern as handling escape sequences.
-- [ReferenceTracker](https://mysticatea.github.io/eslint-utils/api/scope-utils.html#referencetracker-class) checks the members of modules/globals as handling assignments and destructuring.
+- [getStaticValue](https://eslint-utils.mysticatea.dev/api/ast-utils.html#getstaticvalue) evaluates static value on AST.
+- [PatternMatcher](https://eslint-utils.mysticatea.dev/api/ast-utils.html#patternmatcher-class) finds a regular expression pattern as handling escape sequences.
+- [ReferenceTracker](https://eslint-utils.mysticatea.dev/api/scope-utils.html#referencetracker-class) checks the members of modules/globals as handling assignments and destructuring.
## 📖 Usage
-See [documentation](https://mysticatea.github.io/eslint-utils/).
+See [documentation](https://eslint-utils.mysticatea.dev/).
## 📰 Changelog
diff --git a/tools/node_modules/eslint/node_modules/eslint-utils/index.js b/tools/node_modules/eslint/node_modules/eslint-utils/index.js
index 7805b05ef3..f5d3f3e609 100644
--- a/tools/node_modules/eslint/node_modules/eslint-utils/index.js
+++ b/tools/node_modules/eslint/node_modules/eslint-utils/index.js
@@ -240,7 +240,18 @@ function getFunctionHeadLocation(node, sourceCode) {
}
}
-/* globals BigInt */
+/* globals BigInt, globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
const builtinNames = Object.freeze(
new Set([
@@ -316,13 +327,13 @@ const callAllowed = new Set(
Number.parseFloat,
Number.parseInt,
Object,
- Object.entries, //eslint-disable-line @mysticatea/node/no-unsupported-features/es-builtins
+ Object.entries,
Object.is,
Object.isExtensible,
Object.isFrozen,
Object.isSealed,
Object.keys,
- Object.values, //eslint-disable-line @mysticatea/node/no-unsupported-features/es-builtins
+ Object.values,
parseFloat,
parseInt,
RegExp,
@@ -534,9 +545,9 @@ const operations = Object.freeze({
variable != null &&
variable.defs.length === 0 &&
builtinNames.has(variable.name) &&
- variable.name in global
+ variable.name in globalObject
) {
- return { value: global[variable.name] }
+ return { value: globalObject[variable.name] }
}
// Constants.
@@ -1287,7 +1298,6 @@ class PatternMatcher {
}
}
-const SENTINEL_TYPE = /^(?:.+?Statement|.+?Declaration|(?:Array|ArrowFunction|Assignment|Call|Class|Function|Member|New|Object)Expression|AssignmentPattern|Program|VariableDeclarator)$/u;
const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
const has = Function.call.bind(Object.hasOwnProperty);
@@ -1312,6 +1322,28 @@ function isModifiedGlobal(variable) {
}
/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+
+ default:
+ return false
+ }
+}
+
+/**
* The reference tracker.
*/
class ReferenceTracker {
@@ -1447,11 +1479,11 @@ class ReferenceTracker {
esm
? nextTraceMap
: this.mode === "legacy"
- ? Object.assign(
- { default: nextTraceMap },
- nextTraceMap
- )
- : { default: nextTraceMap }
+ ? Object.assign(
+ { default: nextTraceMap },
+ nextTraceMap
+ )
+ : { default: nextTraceMap }
);
if (esm) {
@@ -1512,7 +1544,7 @@ class ReferenceTracker {
//eslint-disable-next-line complexity
*_iteratePropertyReferences(rootNode, path, traceMap) {
let node = rootNode;
- while (!SENTINEL_TYPE.test(node.parent.type)) {
+ while (isPassThrough(node)) {
node = node.parent;
}
diff --git a/tools/node_modules/eslint/node_modules/eslint-utils/index.mjs b/tools/node_modules/eslint/node_modules/eslint-utils/index.mjs
index 2e6391e9b3..4b2a20edf5 100644
--- a/tools/node_modules/eslint/node_modules/eslint-utils/index.mjs
+++ b/tools/node_modules/eslint/node_modules/eslint-utils/index.mjs
@@ -234,7 +234,18 @@ function getFunctionHeadLocation(node, sourceCode) {
}
}
-/* globals BigInt */
+/* globals BigInt, globalThis, global, self, window */
+
+const globalObject =
+ typeof globalThis !== "undefined"
+ ? globalThis
+ : typeof self !== "undefined"
+ ? self
+ : typeof window !== "undefined"
+ ? window
+ : typeof global !== "undefined"
+ ? global
+ : {};
const builtinNames = Object.freeze(
new Set([
@@ -310,13 +321,13 @@ const callAllowed = new Set(
Number.parseFloat,
Number.parseInt,
Object,
- Object.entries, //eslint-disable-line @mysticatea/node/no-unsupported-features/es-builtins
+ Object.entries,
Object.is,
Object.isExtensible,
Object.isFrozen,
Object.isSealed,
Object.keys,
- Object.values, //eslint-disable-line @mysticatea/node/no-unsupported-features/es-builtins
+ Object.values,
parseFloat,
parseInt,
RegExp,
@@ -528,9 +539,9 @@ const operations = Object.freeze({
variable != null &&
variable.defs.length === 0 &&
builtinNames.has(variable.name) &&
- variable.name in global
+ variable.name in globalObject
) {
- return { value: global[variable.name] }
+ return { value: globalObject[variable.name] }
}
// Constants.
@@ -1281,7 +1292,6 @@ class PatternMatcher {
}
}
-const SENTINEL_TYPE = /^(?:.+?Statement|.+?Declaration|(?:Array|ArrowFunction|Assignment|Call|Class|Function|Member|New|Object)Expression|AssignmentPattern|Program|VariableDeclarator)$/u;
const IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u;
const has = Function.call.bind(Object.hasOwnProperty);
@@ -1306,6 +1316,28 @@ function isModifiedGlobal(variable) {
}
/**
+ * Check if the value of a given node is passed through to the parent syntax as-is.
+ * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.
+ * @param {Node} node A node to check.
+ * @returns {boolean} `true` if the node is passed through.
+ */
+function isPassThrough(node) {
+ const parent = node.parent;
+
+ switch (parent && parent.type) {
+ case "ConditionalExpression":
+ return parent.consequent === node || parent.alternate === node
+ case "LogicalExpression":
+ return true
+ case "SequenceExpression":
+ return parent.expressions[parent.expressions.length - 1] === node
+
+ default:
+ return false
+ }
+}
+
+/**
* The reference tracker.
*/
class ReferenceTracker {
@@ -1441,11 +1473,11 @@ class ReferenceTracker {
esm
? nextTraceMap
: this.mode === "legacy"
- ? Object.assign(
- { default: nextTraceMap },
- nextTraceMap
- )
- : { default: nextTraceMap }
+ ? Object.assign(
+ { default: nextTraceMap },
+ nextTraceMap
+ )
+ : { default: nextTraceMap }
);
if (esm) {
@@ -1506,7 +1538,7 @@ class ReferenceTracker {
//eslint-disable-next-line complexity
*_iteratePropertyReferences(rootNode, path, traceMap) {
let node = rootNode;
- while (!SENTINEL_TYPE.test(node.parent.type)) {
+ while (isPassThrough(node)) {
node = node.parent;
}
diff --git a/tools/node_modules/eslint/node_modules/eslint-utils/package.json b/tools/node_modules/eslint/node_modules/eslint-utils/package.json
index bbade790ea..5b9b668f29 100644
--- a/tools/node_modules/eslint/node_modules/eslint-utils/package.json
+++ b/tools/node_modules/eslint/node_modules/eslint-utils/package.json
@@ -7,24 +7,25 @@
},
"bundleDependencies": false,
"dependencies": {
- "eslint-visitor-keys": "^1.0.0"
+ "eslint-visitor-keys": "^1.1.0"
},
"deprecated": false,
"description": "Utilities for ESLint plugins.",
"devDependencies": {
- "@mysticatea/eslint-plugin": "^10.0.3",
- "codecov": "^3.0.2",
+ "@mysticatea/eslint-plugin": "^12.0.0",
+ "codecov": "^3.6.1",
"dot-prop": "^4.2.0",
- "eslint": "^5.16.0",
- "esm": "^3.0.55",
- "espree": "^5.0.1",
- "mocha": "^5.2.0",
- "nyc": "^13.0.1",
- "opener": "^1.4.3",
- "rimraf": "^2.6.2",
- "rollup": "^1.16.7",
+ "eslint": "^6.5.1",
+ "esm": "^3.2.25",
+ "espree": "^6.1.1",
+ "mocha": "^6.2.2",
+ "npm-run-all": "^4.1.5",
+ "nyc": "^14.1.1",
+ "opener": "^1.5.1",
+ "rimraf": "^3.0.0",
+ "rollup": "^1.25.0",
"rollup-plugin-sourcemaps": "^0.4.2",
- "vuepress": "^0.14.4",
+ "vuepress": "^1.2.0",
"warun": "^1.0.0"
},
"engines": {
@@ -49,18 +50,18 @@
"build": "rollup -c",
"clean": "rimraf .nyc_output coverage index.*",
"codecov": "nyc report -r lcovonly && codecov",
- "coverage": "nyc report -r lcov && opener ./coverage/lcov-report/index.html",
+ "coverage": "opener ./coverage/lcov-report/index.html",
"docs:build": "vuepress build docs",
"docs:watch": "vuepress dev docs",
"lint": "eslint src test",
"postversion": "git push && git push --tags",
"prebuild": "npm run -s clean",
- "pretest": "npm run -s lint && npm run -s build",
"preversion": "npm test && npm run -s build",
"prewatch": "npm run -s clean",
- "test": "nyc mocha --reporter dot \"test/*.js\"",
- "watch": "warun \"{src,test}/**/*.js\" -- nyc --reporter lcov mocha --reporter dot \"test/*.js\""
+ "test": "run-s lint build test:mocha",
+ "test:mocha": "nyc mocha --reporter dot \"test/*.js\"",
+ "watch": "warun \"{src,test}/**/*.js\" -- npm run -s test:mocha"
},
"sideEffects": false,
- "version": "1.4.2"
+ "version": "1.4.3"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/espree/lib/espree.js b/tools/node_modules/eslint/node_modules/espree/lib/espree.js
index cd362e71a0..9fd035ebe8 100644
--- a/tools/node_modules/eslint/node_modules/espree/lib/espree.js
+++ b/tools/node_modules/eslint/node_modules/espree/lib/espree.js
@@ -1,15 +1,11 @@
"use strict";
/* eslint-disable no-param-reassign*/
-const acorn = require("acorn");
-const jsx = require("acorn-jsx");
const TokenTranslator = require("./token-translator");
const DEFAULT_ECMA_VERSION = 5;
const STATE = Symbol("espree's internal state");
const ESPRIMA_FINISH_NODE = Symbol("espree's esprimaFinishNode");
-const tokTypes = Object.assign({}, acorn.tokTypes, jsx.tokTypes);
-
/**
* Normalize ECMAScript version from the initial config
@@ -111,238 +107,246 @@ function convertAcornCommentToEsprimaComment(block, text, start, end, startLoc,
return comment;
}
-module.exports = () => Parser => class Espree extends Parser {
- constructor(opts, code) {
- if (typeof opts !== "object" || opts === null) {
- opts = {};
- }
- if (typeof code !== "string" && !(code instanceof String)) {
- code = String(code);
- }
-
- const options = normalizeOptions(opts);
- const ecmaFeatures = options.ecmaFeatures || {};
- const tokenTranslator =
- options.tokens === true
- ? new TokenTranslator(tokTypes, code)
- : null;
+module.exports = () => Parser => {
+ const tokTypes = Object.assign({}, Parser.acorn.tokTypes);
- // Initialize acorn parser.
- super({
-
- // TODO: use {...options} when spread is supported(Node.js >= 8.3.0).
- ecmaVersion: options.ecmaVersion,
- sourceType: options.sourceType,
- ranges: options.ranges,
- locations: options.locations,
-
- // Truthy value is true for backward compatibility.
- allowReturnOutsideFunction: Boolean(ecmaFeatures.globalReturn),
+ if (Parser.acornJsx) {
+ Object.assign(tokTypes, Parser.acornJsx.tokTypes);
+ }
- // Collect tokens
- onToken: token => {
- if (tokenTranslator) {
+ return class Espree extends Parser {
+ constructor(opts, code) {
+ if (typeof opts !== "object" || opts === null) {
+ opts = {};
+ }
+ if (typeof code !== "string" && !(code instanceof String)) {
+ code = String(code);
+ }
- // Use `tokens`, `ecmaVersion`, and `jsxAttrValueToken` in the state.
- tokenTranslator.onToken(token, this[STATE]);
+ const options = normalizeOptions(opts);
+ const ecmaFeatures = options.ecmaFeatures || {};
+ const tokenTranslator =
+ options.tokens === true
+ ? new TokenTranslator(tokTypes, code)
+ : null;
+
+ // Initialize acorn parser.
+ super({
+
+ // TODO: use {...options} when spread is supported(Node.js >= 8.3.0).
+ ecmaVersion: options.ecmaVersion,
+ sourceType: options.sourceType,
+ ranges: options.ranges,
+ locations: options.locations,
+
+ // Truthy value is true for backward compatibility.
+ allowReturnOutsideFunction: Boolean(ecmaFeatures.globalReturn),
+
+ // Collect tokens
+ onToken: token => {
+ if (tokenTranslator) {
+
+ // Use `tokens`, `ecmaVersion`, and `jsxAttrValueToken` in the state.
+ tokenTranslator.onToken(token, this[STATE]);
+ }
+ if (token.type !== tokTypes.eof) {
+ this[STATE].lastToken = token;
+ }
+ },
+
+ // Collect comments
+ onComment: (block, text, start, end, startLoc, endLoc) => {
+ if (this[STATE].comments) {
+ const comment = convertAcornCommentToEsprimaComment(block, text, start, end, startLoc, endLoc);
+
+ this[STATE].comments.push(comment);
+ }
}
- if (token.type !== tokTypes.eof) {
- this[STATE].lastToken = token;
- }
- },
+ }, code);
+
+ // Initialize internal state.
+ this[STATE] = {
+ tokens: tokenTranslator ? [] : null,
+ comments: options.comment === true ? [] : null,
+ impliedStrict: ecmaFeatures.impliedStrict === true && this.options.ecmaVersion >= 5,
+ ecmaVersion: this.options.ecmaVersion,
+ jsxAttrValueToken: false,
+ lastToken: null
+ };
+ }
- // Collect comments
- onComment: (block, text, start, end, startLoc, endLoc) => {
- if (this[STATE].comments) {
- const comment = convertAcornCommentToEsprimaComment(block, text, start, end, startLoc, endLoc);
+ tokenize() {
+ do {
+ this.next();
+ } while (this.type !== tokTypes.eof);
- this[STATE].comments.push(comment);
- }
- }
- }, code);
-
- // Initialize internal state.
- this[STATE] = {
- tokens: tokenTranslator ? [] : null,
- comments: options.comment === true ? [] : null,
- impliedStrict: ecmaFeatures.impliedStrict === true && this.options.ecmaVersion >= 5,
- ecmaVersion: this.options.ecmaVersion,
- jsxAttrValueToken: false,
- lastToken: null
- };
- }
-
- tokenize() {
- do {
+ // Consume the final eof token
this.next();
- } while (this.type !== tokTypes.eof);
- // Consume the final eof token
- this.next();
+ const extra = this[STATE];
+ const tokens = extra.tokens;
- const extra = this[STATE];
- const tokens = extra.tokens;
+ if (extra.comments) {
+ tokens.comments = extra.comments;
+ }
- if (extra.comments) {
- tokens.comments = extra.comments;
+ return tokens;
}
- return tokens;
- }
+ finishNode(...args) {
+ const result = super.finishNode(...args);
- finishNode(...args) {
- const result = super.finishNode(...args);
+ return this[ESPRIMA_FINISH_NODE](result);
+ }
- return this[ESPRIMA_FINISH_NODE](result);
- }
+ finishNodeAt(...args) {
+ const result = super.finishNodeAt(...args);
- finishNodeAt(...args) {
- const result = super.finishNodeAt(...args);
+ return this[ESPRIMA_FINISH_NODE](result);
+ }
- return this[ESPRIMA_FINISH_NODE](result);
- }
+ parse() {
+ const extra = this[STATE];
+ const program = super.parse();
+
+ program.sourceType = this.options.sourceType;
- parse() {
- const extra = this[STATE];
- const program = super.parse();
+ if (extra.comments) {
+ program.comments = extra.comments;
+ }
+ if (extra.tokens) {
+ program.tokens = extra.tokens;
+ }
- program.sourceType = this.options.sourceType;
+ /*
+ * Adjust opening and closing position of program to match Esprima.
+ * Acorn always starts programs at range 0 whereas Esprima starts at the
+ * first AST node's start (the only real difference is when there's leading
+ * whitespace or leading comments). Acorn also counts trailing whitespace
+ * as part of the program whereas Esprima only counts up to the last token.
+ */
+ if (program.range) {
+ program.range[0] = program.body.length ? program.body[0].range[0] : program.range[0];
+ program.range[1] = extra.lastToken ? extra.lastToken.range[1] : program.range[1];
+ }
+ if (program.loc) {
+ program.loc.start = program.body.length ? program.body[0].loc.start : program.loc.start;
+ program.loc.end = extra.lastToken ? extra.lastToken.loc.end : program.loc.end;
+ }
- if (extra.comments) {
- program.comments = extra.comments;
+ return program;
}
- if (extra.tokens) {
- program.tokens = extra.tokens;
+
+ parseTopLevel(node) {
+ if (this[STATE].impliedStrict) {
+ this.strict = true;
+ }
+ return super.parseTopLevel(node);
}
- /*
- * Adjust opening and closing position of program to match Esprima.
- * Acorn always starts programs at range 0 whereas Esprima starts at the
- * first AST node's start (the only real difference is when there's leading
- * whitespace or leading comments). Acorn also counts trailing whitespace
- * as part of the program whereas Esprima only counts up to the last token.
+ /**
+ * Overwrites the default raise method to throw Esprima-style errors.
+ * @param {int} pos The position of the error.
+ * @param {string} message The error message.
+ * @throws {SyntaxError} A syntax error.
+ * @returns {void}
*/
- if (program.range) {
- program.range[0] = program.body.length ? program.body[0].range[0] : program.range[0];
- program.range[1] = extra.lastToken ? extra.lastToken.range[1] : program.range[1];
- }
- if (program.loc) {
- program.loc.start = program.body.length ? program.body[0].loc.start : program.loc.start;
- program.loc.end = extra.lastToken ? extra.lastToken.loc.end : program.loc.end;
+ raise(pos, message) {
+ const loc = Parser.acorn.getLineInfo(this.input, pos);
+ const err = new SyntaxError(message);
+
+ err.index = pos;
+ err.lineNumber = loc.line;
+ err.column = loc.column + 1; // acorn uses 0-based columns
+ throw err;
}
- return program;
- }
-
- parseTopLevel(node) {
- if (this[STATE].impliedStrict) {
- this.strict = true;
+ /**
+ * Overwrites the default raise method to throw Esprima-style errors.
+ * @param {int} pos The position of the error.
+ * @param {string} message The error message.
+ * @throws {SyntaxError} A syntax error.
+ * @returns {void}
+ */
+ raiseRecoverable(pos, message) {
+ this.raise(pos, message);
}
- return super.parseTopLevel(node);
- }
- /**
- * Overwrites the default raise method to throw Esprima-style errors.
- * @param {int} pos The position of the error.
- * @param {string} message The error message.
- * @throws {SyntaxError} A syntax error.
- * @returns {void}
- */
- raise(pos, message) {
- const loc = acorn.getLineInfo(this.input, pos);
- const err = new SyntaxError(message);
-
- err.index = pos;
- err.lineNumber = loc.line;
- err.column = loc.column + 1; // acorn uses 0-based columns
- throw err;
- }
+ /**
+ * Overwrites the default unexpected method to throw Esprima-style errors.
+ * @param {int} pos The position of the error.
+ * @throws {SyntaxError} A syntax error.
+ * @returns {void}
+ */
+ unexpected(pos) {
+ let message = "Unexpected token";
- /**
- * Overwrites the default raise method to throw Esprima-style errors.
- * @param {int} pos The position of the error.
- * @param {string} message The error message.
- * @throws {SyntaxError} A syntax error.
- * @returns {void}
- */
- raiseRecoverable(pos, message) {
- this.raise(pos, message);
- }
+ if (pos !== null && pos !== void 0) {
+ this.pos = pos;
- /**
- * Overwrites the default unexpected method to throw Esprima-style errors.
- * @param {int} pos The position of the error.
- * @throws {SyntaxError} A syntax error.
- * @returns {void}
- */
- unexpected(pos) {
- let message = "Unexpected token";
-
- if (pos !== null && pos !== void 0) {
- this.pos = pos;
-
- if (this.options.locations) {
- while (this.pos < this.lineStart) {
- this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1;
- --this.curLine;
+ if (this.options.locations) {
+ while (this.pos < this.lineStart) {
+ this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1;
+ --this.curLine;
+ }
}
+
+ this.nextToken();
}
- this.nextToken();
- }
+ if (this.end > this.start) {
+ message += ` ${this.input.slice(this.start, this.end)}`;
+ }
- if (this.end > this.start) {
- message += ` ${this.input.slice(this.start, this.end)}`;
+ this.raise(this.start, message);
}
- this.raise(this.start, message);
- }
-
- /*
- * Esprima-FB represents JSX strings as tokens called "JSXText", but Acorn-JSX
- * uses regular tt.string without any distinction between this and regular JS
- * strings. As such, we intercept an attempt to read a JSX string and set a flag
- * on extra so that when tokens are converted, the next token will be switched
- * to JSXText via onToken.
- */
- jsx_readString(quote) { // eslint-disable-line camelcase
- const result = super.jsx_readString(quote);
-
- if (this.type === tokTypes.string) {
- this[STATE].jsxAttrValueToken = true;
+ /*
+ * Esprima-FB represents JSX strings as tokens called "JSXText", but Acorn-JSX
+ * uses regular tt.string without any distinction between this and regular JS
+ * strings. As such, we intercept an attempt to read a JSX string and set a flag
+ * on extra so that when tokens are converted, the next token will be switched
+ * to JSXText via onToken.
+ */
+ jsx_readString(quote) { // eslint-disable-line camelcase
+ const result = super.jsx_readString(quote);
+
+ if (this.type === tokTypes.string) {
+ this[STATE].jsxAttrValueToken = true;
+ }
+ return result;
}
- return result;
- }
- /**
- * Performs last-minute Esprima-specific compatibility checks and fixes.
- * @param {ASTNode} result The node to check.
- * @returns {ASTNode} The finished node.
- */
- [ESPRIMA_FINISH_NODE](result) {
+ /**
+ * Performs last-minute Esprima-specific compatibility checks and fixes.
+ * @param {ASTNode} result The node to check.
+ * @returns {ASTNode} The finished node.
+ */
+ [ESPRIMA_FINISH_NODE](result) {
- // Acorn doesn't count the opening and closing backticks as part of templates
- // so we have to adjust ranges/locations appropriately.
- if (result.type === "TemplateElement") {
+ // Acorn doesn't count the opening and closing backticks as part of templates
+ // so we have to adjust ranges/locations appropriately.
+ if (result.type === "TemplateElement") {
- // additional adjustment needed if ${ is the last token
- const terminalDollarBraceL = this.input.slice(result.end, result.end + 2) === "${";
+ // additional adjustment needed if ${ is the last token
+ const terminalDollarBraceL = this.input.slice(result.end, result.end + 2) === "${";
- if (result.range) {
- result.range[0]--;
- result.range[1] += (terminalDollarBraceL ? 2 : 1);
+ if (result.range) {
+ result.range[0]--;
+ result.range[1] += (terminalDollarBraceL ? 2 : 1);
+ }
+
+ if (result.loc) {
+ result.loc.start.column--;
+ result.loc.end.column += (terminalDollarBraceL ? 2 : 1);
+ }
}
- if (result.loc) {
- result.loc.start.column--;
- result.loc.end.column += (terminalDollarBraceL ? 2 : 1);
+ if (result.type.indexOf("Function") > -1 && !result.generator) {
+ result.generator = false;
}
- }
- if (result.type.indexOf("Function") > -1 && !result.generator) {
- result.generator = false;
+ return result;
}
-
- return result;
- }
+ };
};
diff --git a/tools/node_modules/eslint/node_modules/espree/package.json b/tools/node_modules/eslint/node_modules/espree/package.json
index 0a3460432a..17d49f6e22 100644
--- a/tools/node_modules/eslint/node_modules/espree/package.json
+++ b/tools/node_modules/eslint/node_modules/espree/package.json
@@ -8,8 +8,8 @@
},
"bundleDependencies": false,
"dependencies": {
- "acorn": "^7.0.0",
- "acorn-jsx": "^5.0.2",
+ "acorn": "^7.1.0",
+ "acorn-jsx": "^5.1.0",
"eslint-visitor-keys": "^1.1.0"
},
"deprecated": false,
@@ -66,5 +66,5 @@
"publish-release": "eslint-publish-release",
"test": "npm run-script lint && node Makefile.js test"
},
- "version": "6.1.1"
+ "version": "6.1.2"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/figures/index.js b/tools/node_modules/eslint/node_modules/figures/index.js
index c01148ccb1..10bd6edba0 100644
--- a/tools/node_modules/eslint/node_modules/figures/index.js
+++ b/tools/node_modules/eslint/node_modules/figures/index.js
@@ -1,7 +1,7 @@
'use strict';
const escapeStringRegexp = require('escape-string-regexp');
-const platform = process.platform;
+const {platform} = process;
const main = {
tick: '✔',
@@ -31,6 +31,7 @@ const main = {
smiley: '㋡',
mustache: '෴',
heart: '♥',
+ nodejs: '⬢',
arrowUp: '↑',
arrowDown: '↓',
arrowLeft: '←',
@@ -62,7 +63,7 @@ const main = {
sevenEighths: '⅞'
};
-const win = {
+const windows = {
tick: '√',
cross: '×',
star: '*',
@@ -90,6 +91,7 @@ const win = {
smiley: '☺',
mustache: '┌─┐',
heart: main.heart,
+ nodejs: '♦',
arrowUp: main.arrowUp,
arrowDown: main.arrowDown,
arrowLeft: main.arrowLeft,
@@ -122,26 +124,26 @@ const win = {
};
if (platform === 'linux') {
- // the main one doesn't look that good on Ubuntu
+ // The main one doesn't look that good on Ubuntu
main.questionMarkPrefix = '?';
}
-const figures = platform === 'win32' ? win : main;
+const figures = platform === 'win32' ? windows : main;
-const fn = str => {
+const fn = string => {
if (figures === main) {
- return str;
+ return string;
}
- Object.keys(main).forEach(key => {
- if (main[key] === figures[key]) {
- return;
+ for (const [key, value] of Object.entries(main)) {
+ if (value === figures[key]) {
+ continue;
}
- str = str.replace(new RegExp(escapeStringRegexp(main[key]), 'g'), figures[key]);
- });
+ string = string.replace(new RegExp(escapeStringRegexp(value), 'g'), figures[key]);
+ }
- return str;
+ return string;
};
module.exports = Object.assign(fn, figures);
diff --git a/tools/node_modules/eslint/node_modules/figures/license b/tools/node_modules/eslint/node_modules/figures/license
index 654d0bfe94..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/figures/license
+++ b/tools/node_modules/eslint/node_modules/figures/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+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:
+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 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.
+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/figures/package.json b/tools/node_modules/eslint/node_modules/figures/package.json
index 65f9a9fd5c..b84bc46481 100644
--- a/tools/node_modules/eslint/node_modules/figures/package.json
+++ b/tools/node_modules/eslint/node_modules/figures/package.json
@@ -14,16 +14,18 @@
"deprecated": false,
"description": "Unicode symbols with Windows CMD fallbacks",
"devDependencies": {
- "ava": "*",
- "markdown-table": "^1.0.0",
- "require-uncached": "^1.0.2",
- "xo": "*"
+ "ava": "^1.4.1",
+ "import-fresh": "^3.0.0",
+ "markdown-table": "^1.1.2",
+ "tsd": "^0.7.2",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/figures#readme",
"keywords": [
@@ -32,7 +34,6 @@
"cmd",
"command-line",
"characters",
- "char",
"symbol",
"symbols",
"figure",
@@ -47,10 +48,7 @@
},
"scripts": {
"make": "./makefile.js",
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "2.0.0",
- "xo": {
- "esnext": true
- }
+ "version": "3.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/figures/readme.md b/tools/node_modules/eslint/node_modules/figures/readme.md
index 628703a0a7..cf537009ac 100644
--- a/tools/node_modules/eslint/node_modules/figures/readme.md
+++ b/tools/node_modules/eslint/node_modules/figures/readme.md
@@ -1,4 +1,4 @@
-# figures [![Build Status: Linux](https://travis-ci.org/sindresorhus/figures.svg?branch=master)](https://travis-ci.org/sindresorhus/figures) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/mb743hl70269be3r/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/figures/branch/master)
+# figures [![Build Status](https://travis-ci.org/sindresorhus/figures.svg?branch=master)](https://travis-ci.org/sindresorhus/figures)
> Unicode symbols with Windows CMD fallbacks
@@ -12,7 +12,7 @@ Windows CMD only supports a [limited character set](http://en.wikipedia.org/wiki
## Install
```
-$ npm install --save figures
+$ npm install figures
```
@@ -35,17 +35,17 @@ console.log(figures.tick);
## API
-### figures(input)
+### figures(string)
-Returns the input with replaced fallback unicode symbols on Windows.
+Returns the input with replaced fallback Unicode symbols on Windows.
All the below [figures](#figures) are attached to the main export as shown in the example above.
-#### input
+#### string
Type: `string`
-String where the unicode symbols will be replaced with fallback symbols depending on the OS.
+String where the Unicode symbols will be replaced with fallback symbols depending on the OS.
## Figures
@@ -79,6 +79,7 @@ String where the unicode symbols will be replaced with fallback symbols dependin
| smiley | ㋡ | ☺ |
| mustache | ෴ | ┌─┐ |
| heart | ♥ | ♥ |
+| nodejs | ⬢ | ♦ |
| arrowUp | ↑ | ↑ |
| arrowDown | ↓ | ↓ |
| arrowLeft | ← | ← |
@@ -115,6 +116,14 @@ String where the unicode symbols will be replaced with fallback symbols dependin
- [log-symbols](https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels
-## License
+---
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-figures?utm_source=npm-figures&utm_medium=referral&utm_campaign=readme">Get professional support for this package 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>
diff --git a/tools/node_modules/eslint/node_modules/glob/README.md b/tools/node_modules/eslint/node_modules/glob/README.md
index e71b967ea2..0916a48255 100644
--- a/tools/node_modules/eslint/node_modules/glob/README.md
+++ b/tools/node_modules/eslint/node_modules/glob/README.md
@@ -371,3 +371,5 @@ npm run bench
# to profile javascript
npm run prof
```
+
+![](oh-my-glob.gif)
diff --git a/tools/node_modules/eslint/node_modules/glob/package.json b/tools/node_modules/eslint/node_modules/glob/package.json
index fca34f2f99..cf2be43974 100644
--- a/tools/node_modules/eslint/node_modules/glob/package.json
+++ b/tools/node_modules/eslint/node_modules/glob/package.json
@@ -49,5 +49,5 @@
"test": "tap test/*.js --cov",
"test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js"
},
- "version": "7.1.4"
+ "version": "7.1.5"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/inquirer/README.md b/tools/node_modules/eslint/node_modules/inquirer/README.md
index 00183582c4..fe3326fd74 100644
--- a/tools/node_modules/eslint/node_modules/inquirer/README.md
+++ b/tools/node_modules/eslint/node_modules/inquirer/README.md
@@ -1,11 +1,5 @@
<img width="75px" height="75px" align="right" alt="Inquirer Logo" src="https://raw.githubusercontent.com/SBoudrias/Inquirer.js/master/assets/inquirer_readme.svg?sanitize=true" title="Inquirer.js"/>
-# Compat Version #
-
-This version is branched from Inquirer master branch to maintain support for Node 6.
-
-See latest version release line at https://github.com/SBoudrias/Inquirer.js
-
# Inquirer.js
[![npm](https://badge.fury.io/js/inquirer.svg)](http://badge.fury.io/js/inquirer) [![tests](https://travis-ci.org/SBoudrias/Inquirer.js.svg?branch=master)](http://travis-ci.org/SBoudrias/Inquirer.js) [![Coverage Status](https://codecov.io/gh/SBoudrias/Inquirer.js/branch/master/graph/badge.svg)](https://codecov.io/gh/SBoudrias/Inquirer.js) [![dependencies](https://david-dm.org/SBoudrias/Inquirer.js.svg?theme=shields.io)](https://david-dm.org/SBoudrias/Inquirer.js)
@@ -364,7 +358,7 @@ look at issues found on other command line - feel free to report any!
<a name="news"></a>
-Please refer to the [Github releases section for the changelog](https://github.com/SBoudrias/Inquirer.js/releases)
+Please refer to the [GitHub releases section for the changelog](https://github.com/SBoudrias/Inquirer.js/releases)
## Contributing
diff --git a/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js
index 3d6c7d8113..1fee1d2f30 100644
--- a/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js
+++ b/tools/node_modules/eslint/node_modules/inquirer/lib/prompts/checkbox.js
@@ -122,7 +122,7 @@ class CheckboxPrompt extends Base {
onEnd(state) {
this.status = 'answered';
-
+ this.spaceKeyPressed = true;
// Rerender prompt (and clean subline error)
this.render();
diff --git a/tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js
index 2a0734b5af..966d146cff 100644
--- a/tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js
+++ b/tools/node_modules/eslint/node_modules/inquirer/lib/utils/events.js
@@ -1,6 +1,6 @@
'use strict';
var { fromEvent } = require('rxjs');
-var { filter, map, share } = require('rxjs/operators');
+var { filter, map, share, takeUntil } = require('rxjs/operators');
function normalizeKeypressEvents(value, key) {
return { value: value, key: key || {} };
@@ -8,6 +8,7 @@ function normalizeKeypressEvents(value, key) {
module.exports = function(rl) {
var keypress = fromEvent(rl.input, 'keypress', normalizeKeypressEvents)
+ .pipe(takeUntil(fromEvent(rl, 'close')))
// Ignore `enter` key. On the readline, we only care about the `line` event.
.pipe(filter(({ key }) => key.name !== 'enter' && key.name !== 'return'));
diff --git a/tools/node_modules/eslint/node_modules/inquirer/package.json b/tools/node_modules/eslint/node_modules/inquirer/package.json
index 9c1a62d277..a3efb9cb4b 100644
--- a/tools/node_modules/eslint/node_modules/inquirer/package.json
+++ b/tools/node_modules/eslint/node_modules/inquirer/package.json
@@ -8,17 +8,17 @@
},
"bundleDependencies": false,
"dependencies": {
- "ansi-escapes": "^3.2.0",
+ "ansi-escapes": "^4.2.1",
"chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
+ "cli-cursor": "^3.1.0",
"cli-width": "^2.0.0",
"external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.15",
+ "mute-stream": "0.0.8",
"run-async": "^2.2.0",
"rxjs": "^6.4.0",
- "string-width": "^2.1.0",
+ "string-width": "^4.1.0",
"strip-ansi": "^5.1.0",
"through": "^2.3.6"
},
@@ -28,10 +28,10 @@
"chai": "^4.2.0",
"chalk-pipe": "^2.0.0",
"cmdify": "^0.0.4",
- "mocha": "^5.0.0",
+ "mocha": "^6.2.0",
"mockery": "^2.1.0",
- "nyc": "^13.1.0",
- "sinon": "^7.1.1"
+ "nyc": "^14.1.1",
+ "sinon": "^7.4.1"
},
"engines": {
"node": ">=6.0.0"
@@ -40,7 +40,7 @@
"lib",
"README.md"
],
- "gitHead": "7d87f666042c67638d2e89bd4586d22f61e90130",
+ "gitHead": "be4558e0314afcd3852361929397588744a745d8",
"homepage": "https://github.com/SBoudrias/Inquirer.js#readme",
"keywords": [
"command",
@@ -63,5 +63,5 @@
"prepublishOnly": "cp ../../README.md .",
"test": "nyc mocha test/**/* -r ./test/before"
},
- "version": "6.5.2"
+ "version": "7.0.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js
index d506327c3e..671f97f760 100644
--- a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js
+++ b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/index.js
@@ -1,42 +1,43 @@
-'use strict';
/* eslint-disable yoda */
-module.exports = x => {
- if (Number.isNaN(x)) {
+'use strict';
+
+const isFullwidthCodePoint = codePoint => {
+ if (Number.isNaN(codePoint)) {
return false;
}
- // code points are derived from:
+ // Code points are derived from:
// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
if (
- x >= 0x1100 && (
- x <= 0x115f || // Hangul Jamo
- x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
- x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ codePoint >= 0x1100 && (
+ codePoint <= 0x115F || // Hangul Jamo
+ codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
// CJK Radicals Supplement .. Enclosed CJK Letters and Months
- (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ (0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||
// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
- (0x3250 <= x && x <= 0x4dbf) ||
+ (0x3250 <= codePoint && codePoint <= 0x4DBF) ||
// CJK Unified Ideographs .. Yi Radicals
- (0x4e00 <= x && x <= 0xa4c6) ||
+ (0x4E00 <= codePoint && codePoint <= 0xA4C6) ||
// Hangul Jamo Extended-A
- (0xa960 <= x && x <= 0xa97c) ||
+ (0xA960 <= codePoint && codePoint <= 0xA97C) ||
// Hangul Syllables
- (0xac00 <= x && x <= 0xd7a3) ||
+ (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||
// CJK Compatibility Ideographs
- (0xf900 <= x && x <= 0xfaff) ||
+ (0xF900 <= codePoint && codePoint <= 0xFAFF) ||
// Vertical Forms
- (0xfe10 <= x && x <= 0xfe19) ||
+ (0xFE10 <= codePoint && codePoint <= 0xFE19) ||
// CJK Compatibility Forms .. Small Form Variants
- (0xfe30 <= x && x <= 0xfe6b) ||
+ (0xFE30 <= codePoint && codePoint <= 0xFE6B) ||
// Halfwidth and Fullwidth Forms
- (0xff01 <= x && x <= 0xff60) ||
- (0xffe0 <= x && x <= 0xffe6) ||
+ (0xFF01 <= codePoint && codePoint <= 0xFF60) ||
+ (0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||
// Kana Supplement
- (0x1b000 <= x && x <= 0x1b001) ||
+ (0x1B000 <= codePoint && codePoint <= 0x1B001) ||
// Enclosed Ideographic Supplement
- (0x1f200 <= x && x <= 0x1f251) ||
+ (0x1F200 <= codePoint && codePoint <= 0x1F251) ||
// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
- (0x20000 <= x && x <= 0x3fffd)
+ (0x20000 <= codePoint && codePoint <= 0x3FFFD)
)
) {
return true;
@@ -44,3 +45,6 @@ module.exports = x => {
return false;
};
+
+module.exports = isFullwidthCodePoint;
+module.exports.default = isFullwidthCodePoint;
diff --git a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license
index 654d0bfe94..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license
+++ b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+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:
+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 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.
+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/is-fullwidth-code-point/package.json b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json
index 5db53104f2..c556c1c78d 100644
--- a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json
+++ b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/package.json
@@ -11,14 +11,16 @@
"deprecated": false,
"description": "Check if the character represented by a given Unicode code point is fullwidth",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^1.3.1",
+ "tsd-check": "^0.5.0",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
"keywords": [
@@ -28,9 +30,7 @@
"width",
"unicode",
"character",
- "char",
"string",
- "str",
"codepoint",
"code",
"point",
@@ -45,10 +45,7 @@
"url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd-check"
},
- "version": "2.0.0",
- "xo": {
- "esnext": true
- }
+ "version": "3.0.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md
index 093b0281b2..4236bba980 100644
--- a/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md
+++ b/tools/node_modules/eslint/node_modules/is-fullwidth-code-point/readme.md
@@ -6,7 +6,7 @@
## Install
```
-$ npm install --save is-fullwidth-code-point
+$ npm install is-fullwidth-code-point
```
@@ -15,23 +15,23 @@ $ npm install --save is-fullwidth-code-point
```js
const isFullwidthCodePoint = require('is-fullwidth-code-point');
-isFullwidthCodePoint('谢'.codePointAt());
+isFullwidthCodePoint('谢'.codePointAt(0));
//=> true
-isFullwidthCodePoint('a'.codePointAt());
+isFullwidthCodePoint('a'.codePointAt(0));
//=> false
```
## API
-### isFullwidthCodePoint(input)
+### isFullwidthCodePoint(codePoint)
-#### input
+#### codePoint
Type: `number`
-[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+The [code point](https://en.wikipedia.org/wiki/Code_point) of a character.
## License
diff --git a/tools/node_modules/eslint/node_modules/mimic-fn/index.js b/tools/node_modules/eslint/node_modules/mimic-fn/index.js
index 08e69d3d88..1a59705175 100644
--- a/tools/node_modules/eslint/node_modules/mimic-fn/index.js
+++ b/tools/node_modules/eslint/node_modules/mimic-fn/index.js
@@ -1,9 +1,13 @@
'use strict';
-module.exports = (to, from) => {
- // TODO: use `Reflect.ownKeys()` when targeting Node.js 6
- for (const prop of Object.getOwnPropertyNames(from).concat(Object.getOwnPropertySymbols(from))) {
+
+const mimicFn = (to, from) => {
+ for (const prop of Reflect.ownKeys(from)) {
Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
}
return to;
};
+
+module.exports = mimicFn;
+// TODO: Remove this for the next major release
+module.exports.default = mimicFn;
diff --git a/tools/node_modules/eslint/node_modules/mimic-fn/package.json b/tools/node_modules/eslint/node_modules/mimic-fn/package.json
index 28e9bebe29..cc764d1d2e 100644
--- a/tools/node_modules/eslint/node_modules/mimic-fn/package.json
+++ b/tools/node_modules/eslint/node_modules/mimic-fn/package.json
@@ -11,14 +11,16 @@
"deprecated": false,
"description": "Make a function mimic another one",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/mimic-fn#readme",
"keywords": [
@@ -43,7 +45,7 @@
"url": "git+https://github.com/sindresorhus/mimic-fn.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "1.2.0"
+ "version": "2.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/mimic-fn/readme.md b/tools/node_modules/eslint/node_modules/mimic-fn/readme.md
index e575734389..0ef8a13d7e 100644
--- a/tools/node_modules/eslint/node_modules/mimic-fn/readme.md
+++ b/tools/node_modules/eslint/node_modules/mimic-fn/readme.md
@@ -21,7 +21,7 @@ function foo() {}
foo.unicorn = '🦄';
function wrapper() {
- return foo() {};
+ return foo();
}
console.log(wrapper.name);
@@ -43,7 +43,7 @@ It will copy over the properties `name`, `length`, `displayName`, and any custom
### mimicFn(to, from)
-It will modify `to` and return it.
+Modifies the `to` function and returns it.
#### to
@@ -61,6 +61,7 @@ Function to mimic.
## Related
- [rename-fn](https://github.com/sindresorhus/rename-fn) - Rename a function
+- [keep-func-props](https://github.com/ehmicky/keep-func-props) - Wrap a function without changing its name, length and other properties
## License
diff --git a/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json b/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json
deleted file mode 100644
index 9e26dfeeb6..0000000000
--- a/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33508.json
+++ /dev/null
@@ -1 +0,0 @@
-{} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json b/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json
deleted file mode 100644
index 1d04442328..0000000000
--- a/tools/node_modules/eslint/node_modules/mute-stream/.nyc_output/33510.json
+++ /dev/null
@@ -1 +0,0 @@
-{"./mute.js":{"path":"./mute.js","s":{"1":1,"2":1,"3":1,"4":7,"5":7,"6":7,"7":7,"8":7,"9":7,"10":7,"11":7,"12":1,"13":1,"14":1,"15":10,"16":1,"17":6,"18":1,"19":1,"20":5,"21":1,"22":1,"23":8,"24":1,"25":2,"26":1,"27":5,"28":1,"29":5,"30":1,"31":2,"32":2,"33":1,"34":2,"35":2,"36":1,"37":2,"38":2,"39":1,"40":25,"41":13,"42":5,"43":8,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":8,"51":0,"52":0,"53":0,"54":8,"55":20,"56":1,"57":2,"58":2,"59":0,"60":2,"61":2,"62":0,"63":2,"64":1,"65":3,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1,"73":1,"74":1},"b":{"1":[7,5],"2":[7,7],"3":[3,5],"4":[3,2],"5":[4,1],"6":[0,1],"7":[4,1],"8":[0,1],"9":[2,0],"10":[2,0],"11":[13,12],"12":[5,8],"13":[0,8],"14":[0,0],"15":[0,8],"16":[8,0,0],"17":[2,0],"18":[0,2],"19":[2,1],"20":[0,2],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0]},"f":{"1":7,"2":10,"3":6,"4":5,"5":8,"6":2,"7":5,"8":5,"9":2,"10":2,"11":2,"12":25,"13":2,"14":3,"15":0},"fnMap":{"1":{"name":"MuteStream","line":7,"loc":{"start":{"line":7,"column":0},"end":{"line":7,"column":27}}},"2":{"name":"(anonymous_2)","line":29,"loc":{"start":{"line":29,"column":28},"end":{"line":29,"column":40}}},"3":{"name":"(anonymous_3)","line":33,"loc":{"start":{"line":33,"column":30},"end":{"line":33,"column":42}}},"4":{"name":"onPipe","line":44,"loc":{"start":{"line":44,"column":0},"end":{"line":44,"column":22}}},"5":{"name":"getIsTTY","line":55,"loc":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}}},"6":{"name":"setIsTTY","line":63,"loc":{"start":{"line":63,"column":0},"end":{"line":63,"column":26}}},"7":{"name":"(anonymous_7)","line":73,"loc":{"start":{"line":73,"column":7},"end":{"line":73,"column":19}}},"8":{"name":"(anonymous_8)","line":80,"loc":{"start":{"line":80,"column":7},"end":{"line":80,"column":19}}},"9":{"name":"(anonymous_9)","line":87,"loc":{"start":{"line":87,"column":28},"end":{"line":87,"column":53}}},"10":{"name":"(anonymous_10)","line":92,"loc":{"start":{"line":92,"column":29},"end":{"line":92,"column":41}}},"11":{"name":"(anonymous_11)","line":96,"loc":{"start":{"line":96,"column":30},"end":{"line":96,"column":42}}},"12":{"name":"(anonymous_12)","line":100,"loc":{"start":{"line":100,"column":29},"end":{"line":100,"column":42}}},"13":{"name":"(anonymous_13)","line":124,"loc":{"start":{"line":124,"column":27},"end":{"line":124,"column":40}}},"14":{"name":"proxy","line":136,"loc":{"start":{"line":136,"column":0},"end":{"line":136,"column":20}}},"15":{"name":"(anonymous_15)","line":136,"loc":{"start":{"line":136,"column":29},"end":{"line":136,"column":41}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"3":{"start":{"line":7,"column":0},"end":{"line":20,"column":1}},"4":{"start":{"line":8,"column":2},"end":{"line":8,"column":20}},"5":{"start":{"line":9,"column":2},"end":{"line":9,"column":19}},"6":{"start":{"line":10,"column":2},"end":{"line":10,"column":38}},"7":{"start":{"line":11,"column":2},"end":{"line":11,"column":20}},"8":{"start":{"line":12,"column":2},"end":{"line":12,"column":31}},"9":{"start":{"line":13,"column":2},"end":{"line":13,"column":29}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":36}},"11":{"start":{"line":19,"column":2},"end":{"line":19,"column":26}},"12":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"13":{"start":{"line":24,"column":0},"end":{"line":27,"column":2}},"14":{"start":{"line":29,"column":0},"end":{"line":31,"column":1}},"15":{"start":{"line":30,"column":2},"end":{"line":30,"column":19}},"16":{"start":{"line":33,"column":0},"end":{"line":35,"column":1}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":20}},"18":{"start":{"line":37,"column":0},"end":{"line":42,"column":2}},"19":{"start":{"line":44,"column":0},"end":{"line":46,"column":1}},"20":{"start":{"line":45,"column":2},"end":{"line":45,"column":17}},"21":{"start":{"line":48,"column":0},"end":{"line":53,"column":2}},"22":{"start":{"line":55,"column":0},"end":{"line":60,"column":1}},"23":{"start":{"line":56,"column":2},"end":{"line":59,"column":9}},"24":{"start":{"line":63,"column":0},"end":{"line":70,"column":1}},"25":{"start":{"line":64,"column":2},"end":{"line":69,"column":4}},"26":{"start":{"line":72,"column":0},"end":{"line":77,"column":44}},"27":{"start":{"line":74,"column":4},"end":{"line":76,"column":23}},"28":{"start":{"line":79,"column":0},"end":{"line":84,"column":44}},"29":{"start":{"line":81,"column":4},"end":{"line":83,"column":23}},"30":{"start":{"line":87,"column":0},"end":{"line":90,"column":1}},"31":{"start":{"line":88,"column":2},"end":{"line":88,"column":19}},"32":{"start":{"line":89,"column":2},"end":{"line":89,"column":56}},"33":{"start":{"line":92,"column":0},"end":{"line":94,"column":1}},"34":{"start":{"line":93,"column":2},"end":{"line":93,"column":41}},"35":{"start":{"line":93,"column":17},"end":{"line":93,"column":41}},"36":{"start":{"line":96,"column":0},"end":{"line":98,"column":1}},"37":{"start":{"line":97,"column":2},"end":{"line":97,"column":42}},"38":{"start":{"line":97,"column":17},"end":{"line":97,"column":42}},"39":{"start":{"line":100,"column":0},"end":{"line":122,"column":1}},"40":{"start":{"line":101,"column":2},"end":{"line":120,"column":3}},"41":{"start":{"line":102,"column":4},"end":{"line":102,"column":34}},"42":{"start":{"line":102,"column":23},"end":{"line":102,"column":34}},"43":{"start":{"line":103,"column":4},"end":{"line":119,"column":5}},"44":{"start":{"line":104,"column":6},"end":{"line":108,"column":7}},"45":{"start":{"line":105,"column":8},"end":{"line":105,"column":42}},"46":{"start":{"line":106,"column":8},"end":{"line":106,"column":42}},"47":{"start":{"line":107,"column":8},"end":{"line":107,"column":29}},"48":{"start":{"line":109,"column":6},"end":{"line":109,"column":29}},"49":{"start":{"line":110,"column":6},"end":{"line":110,"column":33}},"50":{"start":{"line":112,"column":6},"end":{"line":117,"column":7}},"51":{"start":{"line":114,"column":8},"end":{"line":114,"column":32}},"52":{"start":{"line":115,"column":8},"end":{"line":115,"column":39}},"53":{"start":{"line":116,"column":8},"end":{"line":116,"column":41}},"54":{"start":{"line":118,"column":6},"end":{"line":118,"column":50}},"55":{"start":{"line":121,"column":2},"end":{"line":121,"column":22}},"56":{"start":{"line":124,"column":0},"end":{"line":134,"column":1}},"57":{"start":{"line":125,"column":2},"end":{"line":131,"column":3}},"58":{"start":{"line":126,"column":4},"end":{"line":130,"column":5}},"59":{"start":{"line":127,"column":6},"end":{"line":127,"column":50}},"60":{"start":{"line":129,"column":6},"end":{"line":129,"column":14}},"61":{"start":{"line":132,"column":2},"end":{"line":132,"column":29}},"62":{"start":{"line":132,"column":9},"end":{"line":132,"column":29}},"63":{"start":{"line":133,"column":2},"end":{"line":133,"column":18}},"64":{"start":{"line":136,"column":0},"end":{"line":141,"column":2}},"65":{"start":{"line":136,"column":22},"end":{"line":141,"column":1}},"66":{"start":{"line":137,"column":2},"end":{"line":137,"column":20}},"67":{"start":{"line":138,"column":2},"end":{"line":138,"column":19}},"68":{"start":{"line":139,"column":2},"end":{"line":139,"column":43}},"69":{"start":{"line":139,"column":18},"end":{"line":139,"column":43}},"70":{"start":{"line":140,"column":2},"end":{"line":140,"column":43}},"71":{"start":{"line":140,"column":18},"end":{"line":140,"column":43}},"72":{"start":{"line":143,"column":0},"end":{"line":143,"column":47}},"73":{"start":{"line":144,"column":0},"end":{"line":144,"column":55}},"74":{"start":{"line":145,"column":0},"end":{"line":145,"column":43}}},"branchMap":{"1":{"line":9,"type":"binary-expr","locations":[{"start":{"line":9,"column":9},"end":{"line":9,"column":13}},{"start":{"line":9,"column":17},"end":{"line":9,"column":19}}]},"2":{"line":18,"type":"binary-expr","locations":[{"start":{"line":18,"column":17},"end":{"line":18,"column":28}},{"start":{"line":18,"column":32},"end":{"line":18,"column":36}}]},"3":{"line":56,"type":"cond-expr","locations":[{"start":{"line":56,"column":25},"end":{"line":56,"column":41}},{"start":{"line":57,"column":10},"end":{"line":58,"column":15}}]},"4":{"line":57,"type":"cond-expr","locations":[{"start":{"line":57,"column":24},"end":{"line":57,"column":39}},{"start":{"line":58,"column":10},"end":{"line":58,"column":15}}]},"5":{"line":74,"type":"cond-expr","locations":[{"start":{"line":74,"column":25},"end":{"line":74,"column":40}},{"start":{"line":75,"column":12},"end":{"line":76,"column":21}}]},"6":{"line":75,"type":"cond-expr","locations":[{"start":{"line":75,"column":24},"end":{"line":75,"column":38}},{"start":{"line":76,"column":12},"end":{"line":76,"column":21}}]},"7":{"line":81,"type":"cond-expr","locations":[{"start":{"line":81,"column":25},"end":{"line":81,"column":43}},{"start":{"line":82,"column":12},"end":{"line":83,"column":21}}]},"8":{"line":82,"type":"cond-expr","locations":[{"start":{"line":82,"column":24},"end":{"line":82,"column":41}},{"start":{"line":83,"column":12},"end":{"line":83,"column":21}}]},"9":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":2},"end":{"line":93,"column":2}},{"start":{"line":93,"column":2},"end":{"line":93,"column":2}}]},"10":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":2},"end":{"line":97,"column":2}},{"start":{"line":97,"column":2},"end":{"line":97,"column":2}}]},"11":{"line":101,"type":"if","locations":[{"start":{"line":101,"column":2},"end":{"line":101,"column":2}},{"start":{"line":101,"column":2},"end":{"line":101,"column":2}}]},"12":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"13":{"line":103,"type":"if","locations":[{"start":{"line":103,"column":4},"end":{"line":103,"column":4}},{"start":{"line":103,"column":4},"end":{"line":103,"column":4}}]},"14":{"line":104,"type":"if","locations":[{"start":{"line":104,"column":6},"end":{"line":104,"column":6}},{"start":{"line":104,"column":6},"end":{"line":104,"column":6}}]},"15":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":6},"end":{"line":112,"column":6}},{"start":{"line":112,"column":6},"end":{"line":112,"column":6}}]},"16":{"line":112,"type":"binary-expr","locations":[{"start":{"line":112,"column":10},"end":{"line":112,"column":22}},{"start":{"line":112,"column":26},"end":{"line":112,"column":42}},{"start":{"line":113,"column":10},"end":{"line":113,"column":39}}]},"17":{"line":125,"type":"if","locations":[{"start":{"line":125,"column":2},"end":{"line":125,"column":2}},{"start":{"line":125,"column":2},"end":{"line":125,"column":2}}]},"18":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"19":{"line":126,"type":"binary-expr","locations":[{"start":{"line":126,"column":8},"end":{"line":126,"column":9}},{"start":{"line":126,"column":13},"end":{"line":126,"column":25}}]},"20":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":2},"end":{"line":132,"column":2}},{"start":{"line":132,"column":2},"end":{"line":132,"column":2}}]},"21":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":2}},{"start":{"line":139,"column":2},"end":{"line":139,"column":2}}]},"22":{"line":139,"type":"binary-expr","locations":[{"start":{"line":139,"column":6},"end":{"line":139,"column":7}},{"start":{"line":139,"column":11},"end":{"line":139,"column":16}}]},"23":{"line":140,"type":"if","locations":[{"start":{"line":140,"column":2},"end":{"line":140,"column":2}},{"start":{"line":140,"column":2},"end":{"line":140,"column":2}}]},"24":{"line":140,"type":"binary-expr","locations":[{"start":{"line":140,"column":6},"end":{"line":140,"column":7}},{"start":{"line":140,"column":11},"end":{"line":140,"column":16}}]}}}} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/mute-stream/package.json b/tools/node_modules/eslint/node_modules/mute-stream/package.json
index 8a5981780d..a5839c56bb 100644
--- a/tools/node_modules/eslint/node_modules/mute-stream/package.json
+++ b/tools/node_modules/eslint/node_modules/mute-stream/package.json
@@ -11,11 +11,14 @@
"deprecated": false,
"description": "Bytes go in, but they don't come out (when muted).",
"devDependencies": {
- "tap": "^5.4.4"
+ "tap": "^12.1.1"
},
"directories": {
"test": "test"
},
+ "files": [
+ "mute.js"
+ ],
"homepage": "https://github.com/isaacs/mute-stream#readme",
"keywords": [
"mute",
@@ -32,5 +35,5 @@
"scripts": {
"test": "tap test/*.js --cov"
},
- "version": "0.0.7"
+ "version": "0.0.8"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/onetime/index.js b/tools/node_modules/eslint/node_modules/onetime/index.js
index 0d76476b0b..a3f412af1b 100644
--- a/tools/node_modules/eslint/node_modules/onetime/index.js
+++ b/tools/node_modules/eslint/node_modules/onetime/index.js
@@ -1,39 +1,50 @@
'use strict';
const mimicFn = require('mimic-fn');
-module.exports = (fn, opts) => {
- // TODO: Remove this in v3
- if (opts === true) {
- throw new TypeError('The second argument is now an options object');
- }
+const calledFunctions = new WeakMap();
+const oneTime = (fn, options = {}) => {
if (typeof fn !== 'function') {
throw new TypeError('Expected a function');
}
- opts = opts || {};
-
let ret;
- let called = false;
- const fnName = fn.displayName || fn.name || '<anonymous>';
+ let isCalled = false;
+ let callCount = 0;
+ const functionName = fn.displayName || fn.name || '<anonymous>';
- const onetime = function () {
- if (called) {
- if (opts.throw === true) {
- throw new Error(`Function \`${fnName}\` can only be called once`);
+ const onetime = function (...args) {
+ calledFunctions.set(onetime, ++callCount);
+
+ if (isCalled) {
+ if (options.throw === true) {
+ throw new Error(`Function \`${functionName}\` can only be called once`);
}
return ret;
}
- called = true;
- ret = fn.apply(this, arguments);
+ isCalled = true;
+ ret = fn.apply(this, args);
fn = null;
return ret;
};
mimicFn(onetime, fn);
+ calledFunctions.set(onetime, callCount);
return onetime;
};
+
+module.exports = oneTime;
+// TODO: Remove this for the next major release
+module.exports.default = oneTime;
+
+module.exports.callCount = fn => {
+ if (!calledFunctions.has(fn)) {
+ throw new Error(`The given function \`${fn.name}\` is not wrapped by the \`onetime\` package`);
+ }
+
+ return calledFunctions.get(fn);
+};
diff --git a/tools/node_modules/eslint/node_modules/onetime/license b/tools/node_modules/eslint/node_modules/onetime/license
index 654d0bfe94..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/onetime/license
+++ b/tools/node_modules/eslint/node_modules/onetime/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+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:
+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 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.
+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/onetime/package.json b/tools/node_modules/eslint/node_modules/onetime/package.json
index c448600d33..3b9293f2b5 100644
--- a/tools/node_modules/eslint/node_modules/onetime/package.json
+++ b/tools/node_modules/eslint/node_modules/onetime/package.json
@@ -9,19 +9,21 @@
},
"bundleDependencies": false,
"dependencies": {
- "mimic-fn": "^1.0.0"
+ "mimic-fn": "^2.1.0"
},
"deprecated": false,
"description": "Ensure a function is only called once",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/onetime#readme",
"keywords": [
@@ -43,7 +45,7 @@
"url": "git+https://github.com/sindresorhus/onetime.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "2.0.1"
+ "version": "5.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/onetime/readme.md b/tools/node_modules/eslint/node_modules/onetime/readme.md
index 95eb3b7c9e..9ecd1b24db 100644
--- a/tools/node_modules/eslint/node_modules/onetime/readme.md
+++ b/tools/node_modules/eslint/node_modules/onetime/readme.md
@@ -4,29 +4,35 @@
When called multiple times it will return the return value from the first call.
-*Unlike the module [once](https://github.com/isaacs/once), this one isn't naughty extending `Function.prototype`.*
+*Unlike the module [once](https://github.com/isaacs/once), this one isn't naughty and extending `Function.prototype`.*
## Install
```
-$ npm install --save onetime
+$ npm install onetime
```
## Usage
```js
+const onetime = require('onetime');
+
let i = 0;
-const foo = onetime(() => i++);
+const foo = onetime(() => ++i);
foo(); //=> 0
foo(); //=> 0
foo(); //=> 0
+
+onetime.callCount(foo); //=> 3
```
```js
+const onetime = require('onetime');
+
const foo = onetime(() => {}, {throw: true});
foo();
@@ -59,6 +65,29 @@ Default: `false`
Throw an error when called more than once.
+### onetime.callCount(fn)
+
+Returns a number representing how many times `fn` has been called.
+
+Note: It throws an error if you pass in a function that is not wrapped by `onetime`.
+
+```js
+const foo = onetime(() => {});
+
+foo();
+foo();
+foo();
+
+console.log(onetime.callCount(foo));
+//=> 3
+```
+
+#### fn
+
+Type: `Function`
+
+Function to get call count from.
+
## License
diff --git a/tools/node_modules/eslint/node_modules/restore-cursor/index.js b/tools/node_modules/eslint/node_modules/restore-cursor/index.js
index 2b8e009883..3e8dd07dc3 100644
--- a/tools/node_modules/eslint/node_modules/restore-cursor/index.js
+++ b/tools/node_modules/eslint/node_modules/restore-cursor/index.js
@@ -4,6 +4,6 @@ const signalExit = require('signal-exit');
module.exports = onetime(() => {
signalExit(() => {
- process.stderr.write('\u001b[?25h');
+ process.stderr.write('\u001B[?25h');
}, {alwaysLast: true});
});
diff --git a/tools/node_modules/eslint/node_modules/restore-cursor/license b/tools/node_modules/eslint/node_modules/restore-cursor/license
index 654d0bfe94..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/restore-cursor/license
+++ b/tools/node_modules/eslint/node_modules/restore-cursor/license
@@ -1,21 +1,9 @@
-The MIT License (MIT)
+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:
+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 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.
+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/restore-cursor/package.json b/tools/node_modules/eslint/node_modules/restore-cursor/package.json
index a764f36598..5f0ba05592 100644
--- a/tools/node_modules/eslint/node_modules/restore-cursor/package.json
+++ b/tools/node_modules/eslint/node_modules/restore-cursor/package.json
@@ -9,16 +9,21 @@
},
"bundleDependencies": false,
"dependencies": {
- "onetime": "^2.0.0",
+ "onetime": "^5.1.0",
"signal-exit": "^3.0.2"
},
"deprecated": false,
"description": "Gracefully restore the CLI cursor on exit",
+ "devDependencies": {
+ "tsd": "^0.7.2",
+ "xo": "^0.24.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/restore-cursor#readme",
"keywords": [
@@ -49,5 +54,8 @@
"type": "git",
"url": "git+https://github.com/sindresorhus/restore-cursor.git"
},
- "version": "2.0.0"
+ "scripts": {
+ "test": "xo && tsd"
+ },
+ "version": "3.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/restore-cursor/readme.md b/tools/node_modules/eslint/node_modules/restore-cursor/readme.md
index a2f5afbc54..c224a2904c 100644
--- a/tools/node_modules/eslint/node_modules/restore-cursor/readme.md
+++ b/tools/node_modules/eslint/node_modules/restore-cursor/readme.md
@@ -1,4 +1,4 @@
-# restore-cursor
+# restore-cursor [![Build Status](https://travis-ci.org/sindresorhus/restore-cursor.svg?branch=master)](https://travis-ci.org/sindresorhus/restore-cursor)
> Gracefully restore the CLI cursor on exit
@@ -8,7 +8,7 @@ Prevent the cursor you've hidden interactively from remaining hidden if the proc
## Install
```
-$ npm install --save restore-cursor
+$ npm install restore-cursor
```
@@ -16,6 +16,7 @@ $ npm install --save restore-cursor
```js
const restoreCursor = require('restore-cursor');
+
restoreCursor();
```
diff --git a/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 0000000000..d506327c3e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/license b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 0000000000..654d0bfe94
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+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/slice-ansi/node_modules/is-fullwidth-code-point/package.json b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 0000000000..5db53104f2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,54 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "name": "is-fullwidth-code-point",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/readme.md b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 0000000000..093b0281b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/slice-ansi/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/string-width/index.js b/tools/node_modules/eslint/node_modules/string-width/index.js
index bbc49d29b1..a348067f03 100644
--- a/tools/node_modules/eslint/node_modules/string-width/index.js
+++ b/tools/node_modules/eslint/node_modules/string-width/index.js
@@ -1,18 +1,21 @@
'use strict';
const stripAnsi = require('strip-ansi');
const isFullwidthCodePoint = require('is-fullwidth-code-point');
+const emojiRegex = require('emoji-regex');
-module.exports = str => {
- if (typeof str !== 'string' || str.length === 0) {
+const stringWidth = string => {
+ string = string.replace(emojiRegex(), ' ');
+
+ if (typeof string !== 'string' || string.length === 0) {
return 0;
}
- str = stripAnsi(str);
+ string = stripAnsi(string);
let width = 0;
- for (let i = 0; i < str.length; i++) {
- const code = str.codePointAt(i);
+ for (let i = 0; i < string.length; i++) {
+ const code = string.codePointAt(i);
// Ignore control characters
if (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {
@@ -34,3 +37,7 @@ module.exports = str => {
return width;
};
+
+module.exports = stringWidth;
+// TODO: remove this in the next major version
+module.exports.default = stringWidth;
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js
deleted file mode 100644
index 96e0292c8e..0000000000
--- a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-'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/string-width/node_modules/strip-ansi/package.json b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json
deleted file mode 100644
index 472b3021ed..0000000000
--- a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "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": "^3.0.0"
- },
- "deprecated": false,
- "description": "Strip ANSI escape codes",
- "devDependencies": {
- "ava": "*",
- "xo": "*"
- },
- "engines": {
- "node": ">=4"
- },
- "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": "4.0.0"
-} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md
deleted file mode 100644
index dc76f0cb1a..0000000000
--- a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# 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)
-
-
-## 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
-- [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/string-width/package.json b/tools/node_modules/eslint/node_modules/string-width/package.json
index f076208ad3..9ef5253e54 100644
--- a/tools/node_modules/eslint/node_modules/string-width/package.json
+++ b/tools/node_modules/eslint/node_modules/string-width/package.json
@@ -9,27 +9,28 @@
},
"bundleDependencies": false,
"dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^5.2.0"
},
"deprecated": false,
"description": "Get the visual width of a string - the number of columns required to display it",
"devDependencies": {
- "ava": "*",
- "xo": "*"
+ "ava": "^1.4.1",
+ "tsd": "^0.7.1",
+ "xo": "^0.24.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/sindresorhus/string-width#readme",
"keywords": [
"string",
- "str",
"character",
- "char",
"unicode",
"width",
"visual",
@@ -58,7 +59,7 @@
"url": "git+https://github.com/sindresorhus/string-width.git"
},
"scripts": {
- "test": "xo && ava"
+ "test": "xo && ava && tsd"
},
- "version": "2.1.1"
+ "version": "4.1.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/string-width/readme.md b/tools/node_modules/eslint/node_modules/string-width/readme.md
index df5b7199f9..35a0c0377a 100644
--- a/tools/node_modules/eslint/node_modules/string-width/readme.md
+++ b/tools/node_modules/eslint/node_modules/string-width/readme.md
@@ -19,14 +19,14 @@ $ npm install string-width
```js
const stringWidth = require('string-width');
+stringWidth('a');
+//=> 1
+
stringWidth('古');
//=> 2
-stringWidth('\u001b[1m古\u001b[22m');
+stringWidth('\u001B[1m古\u001B[22m');
//=> 2
-
-stringWidth('a');
-//=> 1
```
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js
deleted file mode 100644
index c25448009f..0000000000
--- a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'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/strip-ansi/node_modules/ansi-regex/license b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license
deleted file mode 100644
index e7af2f7710..0000000000
--- a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license
+++ /dev/null
@@ -1,9 +0,0 @@
-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/strip-ansi/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json
deleted file mode 100644
index db8f3cc8c7..0000000000
--- a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "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.1.0"
-} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
deleted file mode 100644
index d19c44667e..0000000000
--- a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# 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)
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package 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 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']
-
-'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
-//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
-```
-
-
-## 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.
-
-
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
-## 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/emoji-regex/LICENSE-MIT.txt b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt
new file mode 100644
index 0000000000..a41e0a7ef9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/README.md b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/README.md
new file mode 100644
index 0000000000..37cf14e01f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/es2015/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/es2015/index.js
new file mode 100644
index 0000000000..0216db9587
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/es2015/text.js b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/es2015/text.js
new file mode 100644
index 0000000000..d0a771d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/index.js
new file mode 100644
index 0000000000..e2237a4e80
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/package.json b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/package.json
new file mode 100644
index 0000000000..439b65e435
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/emoji-regex/text.js b/tools/node_modules/eslint/node_modules/table/node_modules/emoji-regex/text.js
new file mode 100644
index 0000000000..199ae3be35
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/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/table/node_modules/is-fullwidth-code-point/index.js b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 0000000000..d506327c3e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/license b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 0000000000..654d0bfe94
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+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/is-fullwidth-code-point/package.json b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 0000000000..5db53104f2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,54 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "name": "is-fullwidth-code-point",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/readme.md b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 0000000000..093b0281b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/table/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license b/tools/node_modules/eslint/node_modules/type-fest/license
index e7af2f7710..e7af2f7710 100644
--- a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license
+++ b/tools/node_modules/eslint/node_modules/type-fest/license
diff --git a/tools/node_modules/eslint/node_modules/type-fest/package.json b/tools/node_modules/eslint/node_modules/type-fest/package.json
new file mode 100644
index 0000000000..a5a398048d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/type-fest/package.json
@@ -0,0 +1,59 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/type-fest/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "A collection of essential TypeScript types",
+ "devDependencies": {
+ "@sindresorhus/tsconfig": "^0.3.0",
+ "@typescript-eslint/eslint-plugin": "^1.8.0",
+ "eslint-config-xo-typescript": "^0.11.0",
+ "tsd": "^0.7.3",
+ "xo": "^0.24.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.d.ts",
+ "source"
+ ],
+ "homepage": "https://github.com/sindresorhus/type-fest#readme",
+ "keywords": [
+ "typescript",
+ "ts",
+ "types",
+ "utility",
+ "util",
+ "utilities",
+ "omit",
+ "merge",
+ "json"
+ ],
+ "license": "(MIT OR CC0-1.0)",
+ "name": "type-fest",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/type-fest.git"
+ },
+ "scripts": {
+ "test": "xo && tsd"
+ },
+ "version": "0.5.2",
+ "xo": {
+ "extends": "xo-typescript",
+ "extensions": [
+ "ts"
+ ],
+ "rules": {
+ "import/no-unresolved": "off",
+ "@typescript-eslint/indent": "off"
+ }
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/type-fest/readme.md b/tools/node_modules/eslint/node_modules/type-fest/readme.md
new file mode 100644
index 0000000000..3f11c3c1ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/type-fest/readme.md
@@ -0,0 +1,118 @@
+<div align="center">
+ <br>
+ <br>
+ <img src="media/logo.svg" alt="type-fest" height="300">
+ <br>
+ <br>
+ <b>A collection of essential TypeScript types</b>
+ <br>
+ <hr>
+</div>
+<br>
+<br>
+
+[![Build Status](https://travis-ci.com/sindresorhus/type-fest.svg?branch=master)](https://travis-ci.com/sindresorhus/type-fest)
+[![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
+<!-- Commented out until they actually show anything
+[![npm dependents](https://badgen.net/npm/dependents/type-fest)](https://www.npmjs.com/package/type-fest?activeTab=dependents) [![npm downloads](https://badgen.net/npm/dt/type-fest)](https://www.npmjs.com/package/type-fest)
+-->
+
+Many of the types here should have been built-in. You can help by suggesting some of them to the [TypeScript project](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md).
+
+Either add this package as a dependency or copy-paste the needed types. No credit required. 👌
+
+PR welcome for additional commonly needed types and docs improvements. Read the [contributing guidelines](.github/contributing.md) first.
+
+
+## Install
+
+```
+$ npm install type-fest
+```
+
+*Requires TypeScript >=3.2*
+
+
+## Usage
+
+```ts
+import {Omit} from 'type-fest';
+
+type Foo = {
+ unicorn: string;
+ rainbow: boolean;
+};
+
+type FooWithoutRainbow = Omit<Foo, 'rainbow'>;
+//=> {unicorn: string}
+```
+
+
+## API
+
+Click the type names for complete docs.
+
+### Basic
+
+- [`Primitive`](source/basic.d.ts) - Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
+- [`Class`](source/basic.d.ts) - Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
+- [`TypedArray`](source/basic.d.ts) - Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
+- [`JsonObject`](source/basic.d.ts) - Matches a JSON object.
+- [`JsonArray`](source/basic.d.ts) - Matches a JSON array.
+- [`JsonValue`](source/basic.d.ts) - Matches any valid JSON value.
+- [`ObservableLike`](source/basic.d.ts) - Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
+
+### Utilities
+
+- [`Omit`](source/omit.d.ts) - Create a type from an object type without certain keys.
+- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly<T>`.
+- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type.
+- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive properties.
+- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given properties.
+- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of a `object`/`Map`/`Set`/`Array` type.
+- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729).
+
+### Miscellaneous
+
+- [`PackageJson`](source/package-json.d.ts) - Type for [npm's `package.json` file](https://docs.npmjs.com/creating-a-package-json-file).
+
+
+## Declined types
+
+*If we decline a type addition, we will make sure to document the better solution here.*
+
+- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.
+
+
+## Tips
+
+### Built-in types
+
+There are many advanced types most users don't know about.
+
+- [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional.
+- [`Required<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required.
+- [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly.
+- [`Pick<T, K>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`.
+- [`Record<K, T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`.
+- [`Exclude<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`.
+- [`Extract<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`.
+- [`NonNullable<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`.
+- [`Parameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple.
+- [`ConstructorParameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple.
+- [`ReturnType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type.
+- [`InstanceType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type.
+
+You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types).
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Jarek Radosz](https://github.com/CvX)
+- [Dimitri Benin](https://github.com/BendingBender)
+
+
+## License
+
+(MIT OR CC0-1.0)
diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json
index b57c88bc36..93da0c92fd 100644
--- a/tools/node_modules/eslint/package.json
+++ b/tools/node_modules/eslint/package.json
@@ -17,11 +17,11 @@
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
- "eslint-plugin-markdown": "^1.0.0",
+ "eslint-plugin-markdown": "^1.0.1",
"eslint-scope": "^5.0.0",
- "eslint-utils": "^1.4.2",
+ "eslint-utils": "^1.4.3",
"eslint-visitor-keys": "^1.1.0",
- "espree": "^6.1.1",
+ "espree": "^6.1.2",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
@@ -31,7 +31,7 @@
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^6.4.1",
+ "inquirer": "^7.0.0",
"is-glob": "^4.0.0",
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
@@ -55,7 +55,7 @@
"devDependencies": {
"@babel/core": "^7.4.3",
"@babel/preset-env": "^7.4.3",
- "acorn": "^7.0.0",
+ "acorn": "^7.1.0",
"babel-loader": "^8.0.5",
"chai": "^4.0.1",
"cheerio": "^0.22.0",
@@ -149,7 +149,8 @@
"perf": "node Makefile.js perf",
"publish-release": "node Makefile.js publishRelease",
"test": "node Makefile.js test",
+ "test:cli": "mocha",
"webpack": "node Makefile.js webpack"
},
- "version": "6.5.1"
+ "version": "6.6.0"
} \ No newline at end of file